Python 带有视图的Django模板逻辑
我需要帮助理解这一点。我昨天问: 这是我现在的观点:Python 带有视图的Django模板逻辑,python,django,Python,Django,我需要帮助理解这一点。我昨天问: 这是我现在的观点: def home(request): context = { "ignore_paths": { "/test1/": False, "/test2/": False, "/test3/": False, "/test4/": False, "/test5/": False,
def home(request):
context = {
"ignore_paths": {
"/test1/": False,
"/test2/": False,
"/test3/": False,
"/test4/": False,
"/test5/": False,
"/test6/": False,
}
}
return render(request, "index.html", context)
{% if not ignore_paths %}
{% include "includes/sidebar.html" %}
{% endif %}
index.html:
def home(request):
context = {
"ignore_paths": {
"/test1/": False,
"/test2/": False,
"/test3/": False,
"/test4/": False,
"/test5/": False,
"/test6/": False,
}
}
return render(request, "index.html", context)
{% if not ignore_paths %}
{% include "includes/sidebar.html" %}
{% endif %}
为什么它对我不起作用 您的
忽略路径
变量是一个字典。除非字典为空,否则它将始终为True
,因此{%if not ignore\u paths%}
将始终计算为False
。你们要做的是检查忽略路径中的每个路径,若其中任何一个路径是True
,若我正确阅读了你们的另一篇文章,就不要显示模板
我会让ignore\u path
成为一个列表或一组您不想在侧边栏中显示的路径:
'ignore_path':{'/test1/'、'/test2/'、'/test3/'、'/test4/'、'/test5/'、'/test6/'}
然后使用检查是否有任何路径在请求中。路径
:
hide\u sidebar=any(请求中的路径。忽略路径中的路径的路径)
那么在你看来,
{%if not hide_sidebar%}
{%include“includes/sidebar.html”%}
{%endif%}
您的忽略路径
变量是一个字典。除非字典为空,否则它将始终为True
,因此{%if not ignore\u paths%}
将始终计算为False
。你们要做的是检查忽略路径中的每个路径,若其中任何一个路径是True
,若我正确阅读了你们的另一篇文章,就不要显示模板
我会让ignore\u path
成为一个列表或一组您不想在侧边栏中显示的路径:
'ignore_path':{'/test1/'、'/test2/'、'/test3/'、'/test4/'、'/test5/'、'/test6/'}
然后使用检查是否有任何路径在请求中。路径
:
hide\u sidebar=any(请求中的路径。忽略路径中的路径的路径)
那么在你看来,
{%if not hide_sidebar%}
{%include“includes/sidebar.html”%}
{%endif%}
它不起作用,因为您没有按预期的方式使用它
您最初的问题是询问如何在除几个模板之外的所有模板中排除该侧栏
其工作方式是在不需要显示的视图上下文中包含“ignore_path”
键,只要该值等于true,该值就不重要
i、 e我使用了“:)”
字符串,因为任何值的字符串都等于true
然后,模板将完成这项艰巨的工作,因为“ignore_paths”键在那些确实需要显示它的视图的上下文中丢失,它将成功地计算if语句并输入它以包含侧栏,请参见此处涉及的逻辑分解
ignore_paths is included ignore_paths isn't included
{% if not ignore_paths %} {% if not ignore_paths %}
{% if not True %} {% if not False %}
{% if False %} {% if True %}
Doesn't enter if Does enter if statement
它不起作用,因为你没有按预期的方式使用它
您最初的问题是询问如何在除几个模板之外的所有模板中排除该侧栏
其工作方式是在不需要显示的视图上下文中包含“ignore_path”
键,只要该值等于true,该值就不重要
i、 e我使用了“:)”
字符串,因为任何值的字符串都等于true
然后,模板将完成这项艰巨的工作,因为“ignore_paths”键在那些确实需要显示它的视图的上下文中丢失,它将成功地计算if语句并输入它以包含侧栏,请参见此处涉及的逻辑分解
ignore_paths is included ignore_paths isn't included
{% if not ignore_paths %} {% if not ignore_paths %}
{% if not True %} {% if not False %}
{% if False %} {% if True %}
Doesn't enter if Does enter if statement
你怎么知道它不工作?侧边栏显示在设置为忽略的页面上@这不是我想用的答案。。。您需要在每个要忽略的视图的上下文数据中包含“忽略的路径”。您如何知道它不起作用?侧边栏显示在设置为忽略的页面上@这不是我想用的答案。。。您需要在每个要忽略的视图的上下文数据中包含“忽略的路径”