example - flask python tutorial
Crear un enlace a una URL de la aplicación Flask en la plantilla de jinja2 (1)
Siento que estás haciendo dos preguntas aquí, pero tomaré una oportunidad ...
Para la URL de publicación harías esto:
<a href="{{ url_for(''post_blueprint.get_post'', year=year, month=month, title=title)}}">
{{ title }}
</a>
Para manejar archivos estáticos, le sugiero que use un administrador de activos como Flask-Assets , pero para hacerlo con un frasco de vainilla usted lo hace:
{{ url_for(''static'', filename=''[filenameofstaticfile]'') }}
Si desea obtener más información, le sugiero que lea. http://flask.pocoo.org/docs/quickstart/#static-files y http://flask.pocoo.org/docs/quickstart/#url-building
Editar para usar kwargs:
Solo pensé que sería más completo ...
Si desea usar url_for
esta manera:
{{ url_for(''post_blueprint.get_post'', **post) }}
Tienes que cambiar tu vista a algo como esto:
@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)
Entonces su código de plantilla puede verse así:
{% for post in posts %}
<a href="{{ url_for(''post_blueprint.get_post'', **post) }}">
{{ post[''title''] }}
</a>
{% endfor %}
En este punto, realmente crearía un método en el modelo para que no tenga que convertirlo en un dict, pero ir tan lejos depende de usted :-).
En mi aplicación Flask, tengo una vista que muestra una publicación
@post_blueprint.route(''/post/<int:year>/<int:month>/<title>'')
def get_post(year,month,title):
# My code
Para mostrar las últimas 10 entradas, tengo la siguiente vista:
@post_blueprint.route(''/posts/'')
def get_all_posts():
# My code
return render_template(''p.html'',posts=posts)
Ahora, cuando visualice las últimas 10 publicaciones, quiero convertir el título de una publicación en un hipervínculo. Actualmente tengo que hacer lo siguiente en mi plantilla de jinja para lograr esto:
<a href="/post/{{year}}/{{month}}/{{title}}">{{title}}</a>
¿Hay alguna forma de evitar la codificación dura de la url?
Al url_for
que la función url_for
que se utiliza para crear urls de Flask como esta:
url_for(''view_name'',**arguments)
He intentado buscar uno, pero yo no puedo encontrarlo.