Django:在include temp中设置默认行为

2024-04-28 00:01:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在模板中设置一个默认行为。在

我有一个问题,Django模板系统不允许在模板中设置变量(我读过Django哲学,我理解它)。在

下面是我的示例问题:

  1. 我要包括一个模板来呈现新闻源:

    template.html:
    ...
    {% include "_newsfeed.html" with slicing=":20" %}
    ...
    

    我不想被迫输入slicing参数,并设置默认行为,比如":20"

  2. 在我的_newsfeed.html中,我想做(伪代码,它不起作用):

    _newsfeed.html:
    ...
    {% if not slicing %}{% with slicing=":20" %}{% endif %}
    
    {% for content in newsfeed_content|slice:slicing %} 
        {# Display content #}
    {% endfor %}
    
    {% if not slicing %}{% endwith %}{% endif %}
    

相反,我在下面做了这件事,这不遵循干法则(也不满足我!)公司名称:

_newsfeed.html:
...
{% if not slicing %}{% with slicing=":20" %}

    {% for content in newsfeed_content|slice:slicing %} 
        {# Display content #}
    {% endfor %}

{% endwith %}{% else %}

    {% for content in newsfeed_content|slice:slicing %} 
        {# Display content #}
    {% endfor %}

{% endif %}

我该怎么办?在


Tags: djangoin模板forifhtmlwithdisplay
1条回答
网友
1楼 · 发布于 2024-04-28 00:01:10

如果你想通过你的模板而不是视图文件来实现,你可以根据切片创建你自己的过滤器

from django.template.defaultfilters import slice_filter

@register.filter("slice_default", is_safe=True)
def slice_filter_20(value, arg=":20"):
    return slice_filter(value, arg)

相关问题 更多 >