如何结合我的模板标签和基础过滤器| linebreaksbr

时间:2016-12-27 13:00:06

标签: python django django-models django-templates

我在该网站的右侧边栏出现问题: http://antonigin.pythonanywhere.com/

我需要在文本中创建换行符。我可以在帖子中补充一点,这不是问题。但边栏使用我的标签。

@register.simple_tag
def notetitle(value):
    note = Note.objects.get(pk=value)
    return note.title

@register.simple_tag
def notetext(value):
    note = Note.objects.get(pk=value)
    return note.text

我创建了该模板:

{% load note_def %}
    {% block note %}

        <h1>{% notetitle 2 %}</h1>
        <p>{% notetext 2 %}</p>
    {% endblock %}

我需要一个过滤器| linebreaksbr。我不知道如何插入这个。

当然,我可以在每个视图中使用我的笔记发送值,并在每个模板中插入{%content block%},但如果我想要更改侧边栏,则需要花费很多时间。

1 个答案:

答案 0 :(得分:0)

简单解决方案:使用返回注释的单个标记,即:

模板标签:

@register.simple_tag
def get_note(value):
    note = Note.objects.get(pk=value)
    return note

模板:

{% load note_def %}
    {% block note %}
        {% get_note 2 as note %}
        <h1>{{ note.title }}</h1>
        <p>{{ note.text|linebreaksbr }}</p>
    {% endblock %}

作为额外的好处,您现在只需要一半的数据库查询;)

注意:对于django&lt; 1.9您必须使用assignment_tag,而不是使用您的确切版本的文档。