2012-06-20 14 views
24

フラスコアプリのURLへのリンクを作成する、私は最後の10個のエントリを表示するには、ポスト私のフラスコアプリでJinja2のテンプレート

@post_blueprint.route('/post/<int:year>/<int:month>/<title>') 
def get_post(year,month,title): 
    # My code 

を表示するビューを持って、私は、ビューを次ています

@post_blueprint.route('/posts/') 
def get_all_posts(): 
    # My code 
    return render_template('p.html',posts=posts) 

最後の10個の投稿を表示すると、投稿のタイトルをハイパーリンクに変換します。

<a href="/post/{{year}}/{{month}}/{{title}}">{{title}}</a> 

URLをハードコーディング避けるためにどのような方法があります: 現在、私はこれを達成するために、私の神社テンプレートで次の操作を行う必要がありますか?

次のようにフラスコのURLを作成するために使用されurl_for関数のように:

url_for('view_name',**arguments) 

私は1つの検索を試してみましたが、私は、それを見つけることができませんメートル。

+0

あなたはklargsを使用するためにurl_forを使用したいと思いますか?これを行う唯一の方法は、投稿を辞書のリストとして持つことです。私は最初にビューであなたのロジックを変更せずにそれを行う方法があるとは思わない。 – ravenac95

+0

いいえ、私はそれを望ましくありません – codecool

答えて

57

あなたがこれを行うと思い投稿urlには次の2つの質問をしているように私はここに感じるが、私はショットを取るよ...

:私は静的ファイルを処理するために

<a href="{{ url_for('post_blueprint.get_post', year=year, month=month, title=title)}}"> 
    {{ title }} 
</a> 

をD「は非常にFlask-Assetsのようなアセット・マネージャーを使用することをお勧めしますが、あなたはバニラフラスコでそれを行うために:あなたは、私は非常にあなたが読むことをお勧めより多くの情報を希望した場合

{{ url_for('static', filename='[filenameofstaticfile]') }} 

。 kwargsからを使用するためのhttp://flask.pocoo.org/docs/quickstart/#static-fileshttp://flask.pocoo.org/docs/quickstart/#url-building

編集:

はちょうどあなたがこのようなurl_forを使用したい場合は、私が

...もっと徹底しただろうと思った:

{{ url_for('post_blueprint.get_post', **post) }} 

ビューを次のように変更する必要があります。

@post_blueprint.route('/posts/') 
def get_all_posts(): 
    models = database_call_of_some_kind # This is assuming you use some kind of model 
    posts = [] 
    for model in models: 
     posts.append(dict(year=model.year, month=model.month, title=model.title)) 
    return render_template('p.html', posts=posts) 

は、その後、あなたのテンプレートコードは次のようになります。あなたが辞書にそれを有効にする必要はありませんので、この時点で

{% for post in posts %} 
    <a href="{{ url_for('post_blueprint.get_post', **post) }}"> 
     {{ post['title'] }} 
    </a> 
{% endfor %} 

私は実際にモデルにメソッドを作成することになりますが、そこまで行きますあなた次第です :-)。

+3

'モデル 'タイプとは何ですか?それをなぜディクテーションに変換する必要があるのですか?私たちはそれを私たちの視点に渡すことはできませんし、ちょうどそれを繰り返しますか? – Ansd

関連する問題