unique_together portable integerfield example python django portability

integerfield - python portable



Django: ''current_tags'' no es una biblioteca de etiquetas válida (15)

Tengo un pequeño proyecto de Django que recibí de un amigo. El código funciona perfectamente en su sistema. Sin embargo, en mi sistema aparece el siguiente mensaje de error cuando ejecuto el servidor:

TemplateSyntaxError at /

''current_tags'' no es una biblioteca de etiquetas válida: la biblioteca de plantillas current_tags no se encuentra, intentó django.templatetags.current_tags

El problema es con una línea en un archivo html:

{% load current_tags %}

Este mismo código funciona en su sistema sin errores. ¿Qué podría ser eso?


"etiquetas personalizadas" no es un error de biblioteca de etiquetas válido, más a menudo se produce porque las etiquetas personalizadas no se cargan en la aplicación.

coloque un init vacío .py dentro de la misma carpeta donde se coloca su "etiqueta de plantilla personalizada" y ejecute el código siguiente en el terminal para cargar las etiquetas de plantilla personalizadas

touch __init__.py


Asegúrese de que la declaración de load sea ​​correcta. Debe ser el nombre del archivo, no el nombre de la aplicación. Por ejemplo, si tienes esta aplicación:

appname ├── __init__.py ├── templatetags │   ├── __init__.py │   └── foobarfilename.py

Entonces deberías poner esto en tu plantilla:

{% load foobarfilename %}

Por supuesto, deberías verificar las otras respuestas también.


Después de haber creado la etiqueta de la plantilla y debe estar dentro del paquete ''templatetags'' dentro de una aplicación instalada en la configuración.INSTALLED_APPS, asegúrese de reiniciar su dev-server.


En mi caso, he creado una instancia de biblioteca usando una variable de etiqueta en lugar de una variable de registro

tag = template.Library()

Pero debería ser

register = template.Library()

Para ser una biblioteca de etiquetas válida, el módulo debe contener una variable a nivel de módulo denominada register que es una instancia template.Library, en la que se registran todas las etiquetas y filtros


Las posibilidades son muchas:

  1. No ha reiniciado su servidor de desarrollo .
  2. Tiene un bucle de dependencia en el archivo templatetag.
  3. Escribió mal algo (directorio, carpeta, nombre de la plantilla en ''cargar'', etc.).
  4. Te olvidaste de agregar la aplicación a INSTALLED_APPS .

Para mí, fue el error de poner comillas alrededor del nombre de la biblioteca en la etiqueta de load .

INCORRECTO: {% load ''library_name'' %}

CORRECTO: {% load library_name %}

Consulte otras respuestas también. Resolví un par de esos problemas también antes de aterrizar aquí.


Para otros que enfrentan esto. Supongamos que su nombre de aplicación es MyApp y su nombre de carpeta de etiquetas es templatetags luego en settings.py debe tener:

INSTALLED_APPS = [ ''MyApp'', ''MyApp.templatetags'' ]

Tanto su aplicación django como su carpeta de etiquetas que se encuentra debajo de su paquete de aplicaciones son necesarias allí.

-> MyApp ---> models.py ---> views.py ---> templatetags -----> __init__.py -----> app_filters.py

Y en su archivo de plantilla:

{% load app_filters %}

También app_filters.py será como:

# coding=utf-8 from django import template register = template.Library() @register.filter(name=''get_item'') def get_item(dictionary, key): return dictionary.get(key)

revise todos los pasos anteriores y puede encontrar el problema.


Por favor, asegúrese de que su carpeta templatetags se inicialice con python, si tiene dudas, solo tome bakup de todos los archivos,

Elimine todos los archivos, dentro de la carpeta templatetags cree solo el archivo init .py, luego reinicie su servidor,

Ahora su carpeta está en Python, luego haga sus cosas.

Esto funciona para mí ...


Recibí el mismo error pero por una razón diferente, así que te lo diré (en caso de que alguien más tenga el mismo problema).

Tenía todo correcto pero tenía mi etiqueta personalizada dentro de una carpeta llamada template_tags y después de una larga búsqueda descubrí que tenía que ser templatetags , y ahora funciona. Por lo tanto, compruebe que el nombre de la carpeta sea exactamente templatetags .


Sugeriría lo siguiente:

  1. (Más probable) No ha instalado una de las dependencias de su biblioteca de etiquetas. Verifique las importaciones dentro del módulo current_tags.py .

  2. Asegúrese de que la aplicación que incluye la biblioteca de etiquetas esté registrada en settings.py en INSTALLED_APPS .

  3. Asegúrese de poder importar correctamente la biblioteca de etiquetas.

    python manage.py shell >>> from app.templatetags import current_tags

    Esto reduce lo que recomienda el siguiente enlace, que es que el error en sí mismo tiende a confundirlo acerca de dónde está buscando una plantilla. Ignora silenciosamente los errores en la importación, lo que significa que current_tags.py podría tener un error de sintaxis u otro motivo por el cual se genera ImportError.

Si todo lo demás falla, consulte este enlace: http://www.b-list.org/weblog/2007/dec/04/magic-tags/


Tal vez alguien lo encuentre útil: de alguna manera, nombré el directorio ''templatetags '' lugar de ''templatetags'' , es decir, con un espacio al final. Tomó horas para finalmente darse cuenta.


Todos los consejos enumerados aquí no me ayudaron. Entonces, en mi caso específico, el problema era que la plantilla de etiqueta debía cargarse desde una aplicación de terceros, y manualmente copié la carpeta de origen con esa aplicación en la carpeta src en mi virtualenv. Luego python setup.py install dentro de esa carpeta. Después de eso, django no pudo cargar este módulo.

Luego eliminé la carpeta fuente e instalada de esta aplicación y la instalé usando pip install -r requirements.txt luego de agregar una línea relevante al archivo requirements.txt . Se descargó en la carpeta src , se instaló y todo comenzó a funcionar correctamente. Espero que esto ayude a alguien.


Tuve este problema y lo solucioné agregando un archivo __init__.py en blanco en mi nombre de aplicación / templatetags / directorio.


supongamos que tiene la siguiente estructura:

-- Nombre de la aplicación

------- templatetags

-------------- init .py

--------------templates_extras.py

------- init .py

-------settings.py

- manage.py

Debe asegurarse de lo siguiente:

  • su propia aplicación dentro de la cual reside su "templatetags" está realmente instalada en INSTALLED_APPS en settings.py (por ejemplo, "Application_Name")

  • su propio módulo de etiqueta que existe dentro de "templatetags" ya está instalado en INSTALLED_APP en settings.py (por ejemplo, "ApplicationName.templatetags.tempaltes_extras")

  • asegúrese de tener " init .py" en el directorio templatetags

  • tienes que reiniciar el servidor

  • En algunos casos, debe eliminar todo * .pyc generado si no funcionó, luego vuelva a intentarlo


Reiniciar el servidor ha resuelto el problema para mí. Deben haberlo mencionado en la documentación.