Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 转向身份验证并根据用户类型授予用户特定权限。但什么也没有发生_Django_Django Models_Django Forms_Django Authentication_Django Login - Fatal编程技术网

Django 转向身份验证并根据用户类型授予用户特定权限。但什么也没有发生

Django 转向身份验证并根据用户类型授予用户特定权限。但什么也没有发生,django,django-models,django-forms,django-authentication,django-login,Django,Django Models,Django Forms,Django Authentication,Django Login,进行身份验证并根据用户类型授予用户特定权限。但什么也没有发生。 我试图根据用户类型限制对网站上某些功能的访问。但当我设置一个条件时,页面上不会发生任何事情: 这是我的型号。py from django.contrib.auth.models import AbstractUser from django.db import models from django.urls import reverse user_type_choice = (('1', 'majstor'),

进行身份验证并根据用户类型授予用户特定权限。但什么也没有发生。 我试图根据用户类型限制对网站上某些功能的访问。但当我设置一个条件时,页面上不会发生任何事情: 这是我的型号。py

 from django.contrib.auth.models import AbstractUser
 from django.db import models
 from django.urls import reverse

 user_type_choice = (('1', 'majstor'),
                    ('2', 'korisnik'))

 class CustomKorisnici(AbstractUser):
     user_type = models.CharField(max_length=100,blank=True,choices=user_type_choice)
     username = models.CharField(max_length=100,unique=True)
     last_name = models.CharField(max_length=100)
     first_name = models.CharField(max_length=100)
     phone_number = models.CharField(max_length=100)
     is_superuser = models.BooleanField(default=False)
     is_active = models.BooleanField(default=True)
     is_staff = models.BooleanField(default=False)
     email = models.EmailField(max_length=100,unique=True)
在设置中,我设置:AUTH\u USER\u MODEL。

 AUTH_USER_MODEL ='korisnici.CustomKorisnici' 
 {% extends "nav_footer.html" %} 
 {% load static %}
 {% block content %}
 <div class="form-group">
   <div class="container">
     <div class="form">
       <form method="post">     
       {% csrf_token %}
       {{ form.as_p }}
       <button id="btn" class="btn" type="submit">Login</button>
       </form>
     </div>
   </div>
  </div>
 </div>
 {% endblock %}
这是我的login.html页面。此部件工作正常。

 AUTH_USER_MODEL ='korisnici.CustomKorisnici' 
 {% extends "nav_footer.html" %} 
 {% load static %}
 {% block content %}
 <div class="form-group">
   <div class="container">
     <div class="form">
       <form method="post">     
       {% csrf_token %}
       {{ form.as_p }}
       <button id="btn" class="btn" type="submit">Login</button>
       </form>
     </div>
   </div>
  </div>
 </div>
 {% endblock %}
{%extensed“nav_footer.html”%}
{%load static%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
登录
{%endblock%}
**在我的home.html页面中,我为用户设置了条件,这是一个问题**

   {% if user.is_authenticated and user.user_type == "korisnik" %}
      <div class="col-md-4">
         <a class="nav-link" href="{% url 'post_page' %}">All posts</a>
       </div>
   {% endif %}
{%if user.u经过身份验证且user.user\u类型==“korisnik”%}
{%endif%}
首先,我设置了一个条件,如果user.u已通过身份验证,并且工作正常。在这之后,为了进行检查,我添加了一个条件,如果user.u经过身份验证并且user.username=='admin'。当我以管理员身份登录时,用户名=='John'或其他条件,它工作正常,链接可见。
但当我尝试条件user.user_type==“korisnik”时,即使在我登录到该用户时,链接也不可见。user_type如何设置为korisnik。我不知道我做错了什么。是否需要执行自定义登录功能或其他操作

存储在数据库中的值是元组的第一个值。从元组
('1','majstor')
可以看出,对于
'majstor'
类型的用户,第一个值
'1'
将存储在字段中。因此,在模板中,您应该编写:

{% if user.is_authenticated and user.user_type == "2" %}
为了使检查更容易,最好的方法是在模型中使用常量。因此,您可以这样更改您的模型:

class CustomKorisnici(AbstractUser):
    MAJSTOR = '1'
    KORISNIK = '2'
    USER_TYPE_CHOICE = (
        (MAJSTOR, 'majstor'),
        (KORISNIK, 'korisnik')
     )
    user_type = models.CharField(max_length=100, blank=True, choices=USER_TYPE_CHOICE)
    # rest of the fields etc.
现在,在模板中,检查将变成:

{% if user.is_authenticated and user.user_type == user.KORISNIK %}