我使用以下模板标记获取'module' object is not callable
:
projectname/controlpanel/templatetags/__init__.py
(空白档案)
projectname/controlpanel/templatetags/md_to_html.py
from django import template
from markdown import markdown
register = template.Library()
@register.filter(name='to_html')
def to_html(md):
return markdown(md)
在我的一个观看中,我返回{'campaign': campaign}
,其中campaign
是具有description
TextField的模型的实例。
<div class="span8" id="editor2">
{{ selected_campaign.description|to_html }}
</div>
答案 0 :(得分:1)
将此添加到INSTALLED_APPS
'django.contrib.markup',
将降价标记(http://pypi.python.org/pypi/Markdown)复制到您的django项目目录
然后使用
{% load markup %}
<div class="span8" id="editor2">
{{ selected_campaign.description|markdown:"safe" }}
</div>
django.contrib.markup
。这是降价过滤器的简单替代品。从'django.contrib.markup',
INSTALLED_APPS
创建模板标记的步骤:
templatetags
文件夹中添加文件夹app
。templatetags
文件夹中添加一个空文件__init__.py
使用以下代码在markup.py
内添加templatetags
:
from django import template
from django.utils.safestring import mark_safe
import markdown as mkdn
register = template.Library()
@register.filter
def markdown(value,smode=None):
return mark_safe(mkdn.markdown(value, safe_mode='escape'))
答案 1 :(得分:0)
我不知道为什么但是markdown
似乎在django中的函数内部不起作用,例如我在django shell中输入了这个(python manage.py shell):
from markdown import markdown
def yes():
return markdown("YES")
它给了我下一个错误:
NameError: global name 'markdown' is not defined
这似乎有效
def yes():
from markdown import markdown
return markdown("YES")
在django shell之外第一种方法正常工作希望这有帮助!