2011-08-14 14 views
4

フラスコを使用してページを作成する方法については、それぞれのビューを記述することなく、ちょっと混乱します。いくつかの静的ページのフラスコ/青写真の使用

ロードしたいページにピックアップする青いプリントを作成するにはどうすればよいですか?

は、これらが、私はそれは、具体的にそれを明記しなくても、それに対応するページを探すために知っているだろうexample.com/section1/subsection/に行った場合、私は仮定するのが好きです私の例のページ

templates/ 
    layout.html 
    section1/ 
    subsection/index.html 
    subsection2/index.html 
    section2 
    subsection/index.html 
     childofsubsection/index.html 

ていると言います。ドキュメントhttp://flask.pocoo.org/docs/blueprints/はこれを説明するのに非常に近いですが、私はまだ少し失われています。

from flask import Flask 
from yourapplication.simple_page import simple_page 

app = Flask(__name__) 
app.register_blueprint(simple_page) 

また、これがどこにあるのかわからないのですか?これはapplication.pyに入っているように見えますが、 "yourapplication"からインポートするように求められます

Pythonエキスパートではなく非常に新しいです。本当にちょっとダンピングダウンが必要です:)

答えて

11

Blueprintの使用例を見たい場合は、this answerをご覧ください。

質問の「テンプレート自動検索」について:ドキュメントで説明されているように、青写真では静的なファイルやテンプレートを検索するフォルダを指定できます。 render_template()呼び出しのテンプレートファイルへのフルパスですが、ファイル名のみです。

どのファイルを選択するかを「魔法のように」知りたい場合は、ちょっとハックする必要があります。解決策は、例えば、それは関数名に基づいて、テンプレートファイルを選択するだろうあなたのビューにデコレータを適用することができ、そのようなデコレータは次のようになります。

from functools import wraps 
from flask import render_template 

def autorender(func): 
    @wraps(func) 
    def wrapper(*args, **kwargs): 
     context = func(*args, **kwargs) 
     return render_template('%s.html' % func.func_name, **context) 
    return wrapper 

は、その後、あなただけにしています(何もコンテキストが存在しない場合、または空の辞書)辞書としてあなたのビューでコンテキストを返します。

@my_blueprint.route('/') 
@autorender 
def index(): 
    return {'name': 'John'} # or whatever your context is 

そして、それは自動的にindex.htmlという名前のテンプレートを選ぶだろう。

+0

これは、多くの助けになりました、ありがとうございます! – Richard

関連する問題