Python Don';在特定的模板页面上,不要在Base中执行某些操作-Django

Python Don';在特定的模板页面上,不要在Base中执行某些操作-Django,python,django,web-applications,Python,Django,Web Applications,我在my base.html中设置了导航栏,如下所示 <ul> <li><a href="{% url 'home' %}">Home</a></li> <li><a href="{% url 'about' %}">About</a></li> <li><a href="{% url 'contac

我在my base.html中设置了导航栏,如下所示

<ul>
            <li><a href="{% url 'home' %}">Home</a></li>
            <li><a href="{% url 'about' %}">About</a></li>
            <li><a href="{% url 'contact' %}">Contact</a></li>

    {% if user.is_authenticated %}
      <li><a href="{% url 'auth_logout' %}">Logout</a></li>

      <li><a href="{% url 'thing_detail' slug=user.thing.slug %}">My Profile</a></li>

    {% else %}
      <li><a href="{% url 'auth_login' %}">Login</a></li>

    <li><a href="{% url 'registration_register' %}">Register</a></li>
    {% endif %}
  </ul>
  • {%if user.u经过身份验证%}
  • {%else%}
  • {%endif%}
现在的问题是,当用户未通过身份验证时,当我呈现一个特定的模板页面时,即

创建_thing.html

{% extends 'layouts/base.html' %}
{% block title %} Create a Thing
- {{ block.super }}{% endblock %}
{% block content %}
<div id="content">
<h1> Create a Thing </h1>
<form role="form" action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
</div>
{% endblock %}
{%extends'布局/base.html%}
{%block title%}创建一个对象
-{{block.super}{%endblock%}
{%block content%}
创造一件事
{%csrf_令牌%}
{{form.as_p}}
{%endblock%}

简单地从Base复制内容并在删除后粘贴它是没有帮助的。它仍然执行base.html并进入if语句并显示一个错误,因为在我在create_thing.html中填写详细信息之前不会定义slug。

尝试将
{%if%}
子句嵌套在另一个
{%if not aux_var%}
子句中。当您不想执行第一个if时,将
“aux_var”:1作为上下文传递给渲染器。

我在哪里定义该变量?在您看来,传递它就像在
{form.as_p}}
中传递表单一样,非常感谢@felício工作得很好。顺便问一下,我可以使用“and”而不是两个if语句吗?如果是,您能告诉语法吗?是的,{%If user.is_authenticated and not aux_var%}也应该工作。