Browse Source

Merge pull request #413 from dmishe/master

Blueprint example app
pull/471/merge
Kenneth Reitz 13 years ago
parent
commit
0ba758d448
  1. 11
      examples/blueprintexample/blueprintexample.py
  2. 36
      examples/blueprintexample/blueprintexample_test.py
  3. 0
      examples/blueprintexample/simple_page/__init__.py
  4. 13
      examples/blueprintexample/simple_page/simple_page.py
  5. 5
      examples/blueprintexample/simple_page/templates/pages/hello.html
  6. 5
      examples/blueprintexample/simple_page/templates/pages/index.html
  7. 25
      examples/blueprintexample/simple_page/templates/pages/layout.html
  8. 5
      examples/blueprintexample/simple_page/templates/pages/world.html

11
examples/blueprintexample/blueprintexample.py

@ -0,0 +1,11 @@
from flask import Flask
from simple_page.simple_page import simple_page
app = Flask(__name__)
app.register_blueprint(simple_page)
# Blueprint can be registered many times
app.register_blueprint(simple_page, url_prefix='/pages')
if __name__ == '__main__':
app.run(debug=True)

36
examples/blueprintexample/blueprintexample_test.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
"""
Blueprint Example Tests
~~~~~~~~~~~~~~
Tests the Blueprint example app
"""
import blueprintexample
import unittest
class BlueprintExampleTestCase(unittest.TestCase):
def setUp(self):
self.app = blueprintexample.app.test_client()
def test_urls(self):
r = self.app.get('/')
self.assertEquals(r.status_code, 200)
r = self.app.get('/hello')
self.assertEquals(r.status_code, 200)
r = self.app.get('/world')
self.assertEquals(r.status_code, 200)
#second blueprint instance
r = self.app.get('/pages/hello')
self.assertEquals(r.status_code, 200)
r = self.app.get('/pages/world')
self.assertEquals(r.status_code, 200)
if __name__ == '__main__':
unittest.main()

0
examples/blueprintexample/simple_page/__init__.py

13
examples/blueprintexample/simple_page/simple_page.py

@ -0,0 +1,13 @@
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
simple_page = Blueprint('simple_page', __name__,
template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
try:
return render_template('pages/%s.html' % page)
except TemplateNotFound:
abort(404)

5
examples/blueprintexample/simple_page/templates/pages/hello.html

@ -0,0 +1,5 @@
{% extends "pages/layout.html" %}
{% block body %}
Hello
{% endblock %}

5
examples/blueprintexample/simple_page/templates/pages/index.html

@ -0,0 +1,5 @@
{% extends "pages/layout.html" %}
{% block body %}
Blueprint example page
{% endblock %}

25
examples/blueprintexample/simple_page/templates/pages/layout.html

@ -0,0 +1,25 @@
<!doctype html>
<title>Simple Page Blueprint</title>
<div class=page>
<h1>This is blueprint example</h1>
<p>
A simple page blueprint is registered under / and /pages<br/>
you can access it using this urls:
<ul>
<li><a href="{{ url_for('simple_page.show', page='hello') }}">/hello</a></li>
<li><a href="{{ url_for('simple_page.show', page='world') }}">/world</a></li>
</ul>
</p>
<p>
Also you can register the same blueprint under another path
<ul>
<li><a href="/pages/hello">/pages/hello</a></li>
<li><a href="/pages/world">/pages/world</a></li>
</ul>
</p>
{% block body %}
{% endblock %}
</div>

5
examples/blueprintexample/simple_page/templates/pages/world.html

@ -0,0 +1,5 @@
{% extends "pages/layout.html" %}
{% block body %}
World
{% endblock %}
Loading…
Cancel
Save