you tag register invalid forget examples did bootstrap django static block

tag - Django: ¿Es imposible etiquetar estático en la etiqueta de bloqueo?



django templates examples (4)

El siguiente código comete un error. ¿Cómo podría resolver este problema?

Gracias por adelantado :)

{% block header %} <link rel="stylesheet" href="{% static ''shop/style.css'' %}" /> {% endblock %}

El resultado de error:

  • TemplateSyntaxError: etiqueta de bloque inválida: ''static'', expected ''endblock''

No, no es imposible. Intente incluir {% load staticfiles%} en el mismo archivo html, en lugar de intentar heredarlo de algún base.html .


1.) en settings.py agrega A TUPLE:

STATIFILES_DIR = (os.path.join (BASE_DIR, ''assets''),)

2.) en urls.py agregar:

from django.contrib.staticfiles.urls import staticfiles.urlpatterns urlpatterns += staticfile_urlpatterns()

3.) en el archivo html donde está poniendo "link rel = ''stylesheet'' ..", simplemente agregue en la parte superior:

{% load static from staticfiles %} and then use : <link rel="stylesheet" href="{% static ''assets/css'' %}"


Sí. Django no lo permitirá.

Solo puede usar la ruta apropiada como:

<link rel="stylesheet" href="/static/shop/style.css" />

Pero tenga en cuenta: si cambia el STATIC_URL su aplicación, el href anterior también debe actualizarse en consecuencia.

Desde Configurar archivos estáticos :

En sus plantillas, codifique la URL como /static/my_app/example.jpg o, preferiblemente, use la etiqueta de plantilla estática ...


Mi solución es include otra página con {% load static %} y script con referencia estática. {% block xxx %} espera que el primer {% yyy %} no sea distinto de {% include %} y {% endblock %} (los únicos casos que he observado); así que cuando usamos "{% static ''xxx.js'' %}" se rompe y se queja. Pero incluir otra página pondrá a Django en calma.

Por ejemplo, tengo una página de homepage que extiende base.html y tiene algunos archivos js estáticos que no están incluidos en base.html .

base.html

{% block page %} {% endblock %} {% block script %} {% endblock %}

homepage.html :

{% extends ''base.html'' %} {% block page %} ... {% endblock %} {% block script %} {% include ''home_js.html''%} <!-- don''t use static links here because Django does not like it. --> {% endblock %}

home_js.html :

{% load static %} <script src="{% static ''scripts/jquery.js'' %}" ></script> <script> function ... </script>

Ahora los guiones se cargan.

Por lo tanto, en un bloque no podemos usar etiquetas {% %} %% {% %} distintas de {% block xxx %} y {% endblock %} .

Estoy usando Django 5.1.

EDITAR:

Encontré la etiqueta {% verbatim %} como nuestro salvador en tal situación.