Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中单独的成员和来宾模板内容_Python_Django_Django Templates - Fatal编程技术网

Python django中单独的成员和来宾模板内容

Python django中单独的成员和来宾模板内容,python,django,django-templates,Python,Django,Django Templates,我正在试图找出什么是最好的方式来混合成员和来宾模板。 主要区别在于页面的菜单。在我使用过的一些语言中,您可以在模板中添加前缀,以便将整个模板切换到其他版本。 前任: base.guest.html base.member.html 在Django中,我看到的与此相关的唯一方式是我在文档中找到的代码: if request.user.is_authenticated(): # Do something for authenticated users. else: # Do some

我正在试图找出什么是最好的方式来混合成员和来宾模板。 主要区别在于页面的菜单。在我使用过的一些语言中,您可以在模板中添加前缀,以便将整个模板切换到其他版本。 前任: base.guest.html base.member.html

在Django中,我看到的与此相关的唯一方式是我在文档中找到的代码:

if request.user.is_authenticated():
    # Do something for authenticated users.
else:
    # Do something for anonymous users.
这是Django的基本方法吗?或者我还缺少什么


对于我的大多数页面来说,这可以解决问题,但不确定是否有更好的方法根据身份验证状态切换内容。

在这种情况下,您不
扩展
,而是
包含
base.html
应该与身份验证无关

{% if user.is_authenticated %}
    {% include 'member.html' %}
{% else %}
    {% include 'guest.html' %}
{% endif %}

如果愿意,也可以在视图中使用If语句,并将要包含的模板的名称传递给主模板。有关更多信息,请参见

如果else被重复到多个视图中,您可以创建一个自定义中间件,以查看如果您使用
RequestContext
呈现模板中的
user
变量,用户是否已登录。然后您可以使用
{%if user.is_authenticated%}
并在模板中编写适当的html。是的,我知道{%if user.is_authenticated%}选项。但我想我是在寻找一种方法来完成{%extends“base.html”%},并让它根据经过身份验证的状态自动包含一个版本