Django错误:sdr_media'不是有效的标记库:找不到模板库sdr_media。如何删除此错误?

时间:2011-06-02 10:42:38

标签: django

我的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 个答案:

答案 0 :(得分:1)

是的,确实如此。 templatetags目录应位于app目录中,而不是在templates目录中。

例如myproject/myapp/templatetags/sdr_media.py

答案 1 :(得分:0)

我会说:是的

  

该应用应包含模板标签   目录,与...相同的级别   models.py,views.py等。如果这样   尚不存在,创建它

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

答案 2 :(得分:0)

遇到同样的问题,并解决了它:

  1. 应用DrTyrsa的答案(强制性)

  2. 重启django服务器(必填)