我有以下几点
在设置中/base.py
SOME_TEMPLATE = os.getenv("SOME_TEMPLATE", "something/template.html")
TEMPLATES = [
{
# i skip ....
"OPTIONS": {
"context_processors": [
# i skip...
# for the project-specific context
"core.context_processors.settings_values",
],
},
},
]
然后在core/context_processors.py中
from django.conf import settings
def settings_values(request):
"""
Returns settings context variable.
"""
# pylint: disable=unused-argument
return {
"SOME_TEMPLATE": settings.SOME_TEMPLATE,
}
在实际模板中
{% include SOME_TEMPLATE %}
如果不改变或删除{% include SOME_TEMPLATE %}
,我可以做什么,这样在默认情况下,模板不包括在内?最好是在设置级别?
我想使用if标签,但我觉得它会更冗长。
例如:
{% if SOME_TEMPLATE %}
{% include SOME_TEMPLATE %}
{% endif %}
有没有一种方法可以不那么冗长,但仍然达到同样的结果?
1条答案
按热度按时间2wnc66cl1#
最简单的解决办法似乎是:Iain Shelvington建议的备用空模板
另一种解决方案是编写一个特定的
templatetag
来完全按照您的要求执行该工作以
<your_app>/templatetag/my_include.py
为单位在
<your_app>/templates/tags/my_include.html
中在html页面中
**NB:**这样,您还可以移动
templatetag
代码中的所有settings_values(request)
代码...