我在mytag.py文件中有一個mytag的標籤定義。當我使用帶有settings.py和INSTALLED_APPS的Django項目時,此工作正常 - 我將'myapp'追加到列表中,並將mytag.py放在myapp/templatetags中。如何從文件加載自定義Django標籤?
現在我正在使用django.conf.settings.configure,並且我沒有帶templatetags子目錄的模塊 - 我如何加載mytag.py?
更新:
我現在試圖用一個模塊創建一個templatetags目錄,但我不能得到它的工作。這裏是我的設置:
文件:
- MYAPP
__init.py__
- templatetags
__init__.py
- mytag.py
- 程序
- test.py
- 的test.html
這是相關代碼:
# test.py
from django.template import Template, Context
from django.conf import settings
from mostlystatic.processors.mostlystaticprocessor import MostlystaticProcessor
from mostlystatic.stuff import DebugLogger
import sys
sys.path.append("~/")
settings.configure(
DEBUG=True,
TEMPLATE_DEBUG = True,
INSTALLED_APPS = ("myapp",)
)
t = Template(open("test.html").read())
c = Context({})
content = t.render(c)
print content
# test.html
{% load mytag %}
# mytag.py (doesn't load)
from classytags.arguments import Argument
from classytags.core import Tag, Options
from django import template
register = template.Library()
class MyTag(Tag):
name="mytag"
def render_tag(self, context:
return "test"
register.tag(MyTag)
當我運行test.py我得到這個消息:
Traceback (most recent call last):
File "test.py", line 16, in <module>
t = Template(open("test.html").read())
File "/Library/Python/2.7/site-packages/django/template/base.py", line 125, in __init__
self.nodelist = compile_string(template_string, origin)
File "/Library/Python/2.7/site-packages/django/template/base.py", line 153, in compile_string
return parser.parse()
File "/Library/Python/2.7/site-packages/django/template/base.py", line 270, in parse
compiled_result = compile_func(self, token)
File "/Library/Python/2.7/site-packages/django/template/defaulttags.py", line 1033, in load
(taglib, e))
django.template.base.TemplateSyntaxError: 'mytag' is not a valid tag library: Template library mytag not found, tried django.templatetags.mytag
你想從一個不存在的應用中包含你的標籤嗎? – arie 2012-02-23 11:53:47
「我曾經擁有<遵循文檔的東西>,現在我想要做<完全打破項目應該配置的方式的東西>,我該怎麼做?」 – 2012-02-23 11:58:37
@arie我還有標籤文件,我只用它來測試它。 – fgm2r 2012-02-23 11:59:04