Créer un lien vers une url de L'application Flask dans le modèle jinja2

Dans ma Gourde application, j'ai une vue qui affiche un post

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

Pour afficher les 10 dernières entrées, j'ai vue suivante:

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

maintenant, quand j'affiche les 10 derniers messages, je veux convertir le titre d'un message en un lien hypertexte. Actuellement, je dois faire ce qui suit dans mon Jinja template pour réaliser ceci:

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

y a-t-il un moyen d'éviter le codage dur de l'url?

url_for fonction qui est utilisée pour créer Flacon url comme ceci:

url_for('view_name',**arguments)

j'ai essayé d'en chercher un mais je ne le trouve pas.

28
demandé sur roy 2012-06-20 21:28:07

1 réponses

j'ai l'impression que vous posez deux questions, mais je vais tenter ma chance...

Pour l'affichage de l'url que vous souhaitez faire ceci:

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

pour gérer des fichiers statiques, je suggère fortement d'utiliser un gestionnaire d'actifs comme Flacon Actifs, mais de le faire avec de la vanille flacon de vous faire:

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

si vous voulez plus d'information, je vous conseille vivement de lire. http://flask.pocoo.org/docs/quickstart/#static-files