Ошибка Django: sdr_media 'не является допустимой библиотекой тегов: Библиотека шаблонов sdr_media не найдена. Как убрать эту ошибку? - PullRequest
0 голосов
/ 02 июня 2011

Мой sdr_media.py находится на этом пути.

geodjango/geographic_admin/templates/templatetags/sdr_media.py

Мой layer_upload.html находится в этой папке

   geodjango/geographic_admin/template/maps

Код такой

{% load sdr_media %}

Но тег sdr_media все еще не найден. Папка templatetags имеет init .py для ее работы. Мой путь неверен?

Редактировать

Это код sdr_media.py

from django import template
from django.conf import settings

register = template.Library()

@register.tag('sdr_media')
def geonode_media(parser, token):
    try:
        tagname, argument = token.split_contents()
        argument = argument[1:-1] # get rid of quotes
        if not argument in settings.MEDIA_LOCATIONS:
            raise template.TemplateSyntaxError, '%s is not a valid resource name' % argument
        return MediaNode(argument)
    except ValueError:
        raise template.TemplateSyntaxError, '%r requires a single argument' % token.contents.split()[0]

class MediaNode(template.Node):
    def __init__(self, resource):
        self.resource = resource

    def render(self, context):
        return settings.MEDIA_LOCATIONS[self.resource]

Ответы [ 3 ]

1 голос
/ 02 июня 2011

Да, это так. Каталог templatetags должен находиться в каталоге приложения, а не в каталоге шаблонов.

Например myproject/myapp/templatetags/sdr_media.py

0 голосов
/ 11 марта 2013

Просто возникла та же проблема, и решил ее:

  1. применить ответ DrTyrsa (обязательно)

  2. перезапустить сервер django (обязательно)

0 голосов
/ 02 июня 2011

Я бы сказал: да

Приложение должно содержать каталог templatetags на том же уровне, что и models.py, views.py и т. Д. Если его еще нет, создайтеэто

https://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#code-layout

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...