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.