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

你怎么知道它不工作?侧边栏显示在设置为忽略的页面上@这不是我想用的答案。。。您需要在每个要忽略的视图的上下文数据中包含“忽略的路径”。您如何知道它不起作用?侧边栏显示在设置为忽略的页面上@这不是我想用的答案。。。您需要在每个要忽略的视图的上下文数据中包含“忽略的路径”