Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Django根据用户类型显示html页面_Django_Django Templates - Fatal编程技术网

Django根据用户类型显示html页面

Django根据用户类型显示html页面,django,django-templates,Django,Django Templates,我想根据用户类型(管理员、来宾、学生等)显示我网站的主页。最好为来宾用户显示登录页面的链接,但是对于已经通过身份验证的用户,应该隐藏此链接。对于管理员,应该有一个指向django admin的链接。除此之外,其他用户角色的主页也存在一些差异 实现这一点的好方法是什么?我有几种选择: 为每个用户角色创建html页面:home\u guest.html,home\u admin.html 创建一个html页面,但在其中放入一些if子句,如{%if user.is\u authenticated%}

我想根据用户类型(管理员、来宾、学生等)显示我网站的主页。最好为来宾用户显示登录页面的链接,但是对于已经通过身份验证的用户,应该隐藏此链接。对于管理员,应该有一个指向django admin的链接。除此之外,其他用户角色的主页也存在一些差异

实现这一点的好方法是什么?我有几种选择:

  • 为每个用户角色创建html页面:
    home\u guest.html
    home\u admin.html
  • 创建一个html页面,但在其中放入一些if子句,如
    {%if user.is\u authenticated%}

  • 您可以从文档开始,使用:

    从django.contrib.auth.decorators导入用户\u通过\u测试
    def电子邮件检查(用户):
    返回user.email.endswith(“@example.com”)
    @用户通过测试(电子邮件检查)
    定义我的视图(请求):
    ...
    
    这大致意味着,如果用户通过了电子邮件
    endswith
    中提供的测试,那么他们将能够看到一个视图。在我的例子中,我稍微偏离了这一点,创建了一个

    类用户(AbstractBaseUser):
    状态:1,2本身,在我的模型中:
    学生=1
    教师=2
    状态选择=((学生,“学生”),(教师,“教师”),)
    status=models.IntegerField(选项=status\u选项)
    
    这使您可以创建
    is\u status
    属性:

    @属性
    def为_状态(自身):
    返回自我状态
    

    然后在登录视图中,您可以使用这些属性。如果为1,则显示此视图,否则,显示另一个视图。

    选择2。参数依赖性是模板的作用。