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.