tutorial example python flask jinja2 url-for

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.