python - 如何在 Django 中为不同的用户重定向登录到不同的页面?

标签 python django django-models

我正在从事一个需要多个用户的项目。我应该如何根据用户的角色将用户发送到不同的页面?这是与登录相关的模型和 View 的代码。

模型.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
Roles = (
    ('sales', 'SALES'),
    ('operations', 'OPERATIONS'),
    ('cashier', 'CASHIER'),
    ('frontdesk', 'FRONTDESK'),
    ('client', 'CLIENT'),

)


class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,    default=None, null=True)
    role = models.CharField(max_length=50, choices=Roles, default='client')

    def __str__(self):
        return self.user.username

登录查看:

def user_login(request):
if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')

    user = authenticate(username = username , password = password)
    if user:
        if user.is_active:

             login(request, user)
             return HttpResponseRedirect(reverse('index'))
        else:
            return HttpResponse("ACCount not active!!")

    else:
        print("someone tried to login and falied!")
        print("Username : {} and Password : {}".format(username,password))
        return HttpResponse("Invalid credentials!")

else:
    return render(request , 'NewApp/login.html' , {})

最佳答案

您可以通过检查角色值然后重定向到适当的 View 来做到这一点:

if user.is_active:
    login(request, user)
    if user.userprofile.role == 'sales':
        # sales users landing page
    elif user.userprofile.role == 'operations':
        # operations users landing page
        . . . . . 
    else:
        return HttpResponseRedirect(reverse('index'))

关于python - 如何在 Django 中为不同的用户重定向登录到不同的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526277/

相关文章:

用于控制ASCOM CCD相机的Python脚本?

django - 如何将属性 '_meta' 添加到对象?

django - 如何更改django-rest-framework的authtoken中的现有 token ?

python - 使用用户定义的主键 Django 更新数据库中的元素

python - 如何从列表中只获取不同的值?

python - 设置sequence_length对dynamic_rnn中返回状态的影响

python - 使用字典审查文本字符串并用 X 替换单词。 Python

python - 如何使用 docker 将 django cookiecutter 项目上传和部署到 heroku?

django - 登出无效

django - 如果您只发送 JSON 对象,那么合适的 NGINX 配置是什么?