Soy muy nuevo en Jinja y Flask
Quiero establecer un color de fondo diferente en la barra de navegación para indicar la página actual.
¿Hay alguna variable o método Jinja incorporado que devuelva las páginas HTML actuales? Si es posible, quiero el código que no necesita comunicarse con el archivo de Python.
Así que si estoy actualmente en index.html
, devolverá “index” o “index.html”
Aquí está mi código de navegación en mi plantilla:
{% for item in navigation %} - {{item.text}}
{% endfor %}
Quiero agregar una statement if
para que la página actual obtenga
class
{% if ??? %} ... {% else %} ... {% endif %}
Gracias
Hay un truco en el documento jinja2 para su problema: http://jinja.pocoo.org/docs/tricks/
Si su lista es lo suficientemente simple, solo usando el objeto de solicitud, algo como eso:
{{item.text}}
Normalmente, escribo este fragmento de código en una macro con un argumento explícito para establecer active
:
{% macro render_sitem(endpoint, display, cls='', icon-cls='', active='') %} {{display}} {% endmacro %}
La lista será algo como:
Por lo tanto, si tiene una página secundaria que amplía o incluye su lista, puede establecer un elemento activo como:
{% set active_page = 'page.index' %}
en la parte superior de la página de su hijo.
En la pirámide 1.5 no hay ningún método como request.endpoint en Flask.
Utilizamos filtro personalizado get_endpoint
request.path | get_endpoint
jinja2_custom_filters.py:
from pyramid_jinja2 import Environment def get_endpoint(str): """ :param str: :return: """ return str.split('/')[-1] env = Environment() env.filters['get_endpoint'] = get_endpoint
y en desarrollo.ini:
jinja2.filters = model_url = pyramid_jinja2.filters:model_url_filter route_url = pyramid_jinja2.filters:route_url_filter static_url = pyramid_jinja2.filters:static_url_filter get_endpoint = path to ... jinja2_custom_filters.get_endpoint
Tal vez sea de utilidad para alguien 🙂