Merge pull request #413 from dmishe/master

Blueprint example app
This commit is contained in:
Kenneth Reitz 2012-06-25 10:49:11 -07:00
commit 0ba758d448
8 changed files with 100 additions and 0 deletions

View file

@ -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)

View file

@ -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()

View file

@ -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)

View file

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

View file

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

View file

@ -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>

View file

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