在 django 中登录后创建用户特定的重定向
Create User-Specific Redirect After Login in django
我的 Django 应用程序中有三种类型的人 Admin、Staff 和 Parent。我如何为他们设置登录,因为他们在使用 django 注册登录后会有不同的视图?
到目前为止我的代码是这样的:
在 settings.py
LOGIN_REDIRECT_URL = '/app/login_redirect'
LOGIN_URL = '/app/accounts/login/'
LOGOUT_URL = '/app/accounts/logout/'
并在 views.py 中:
def login_redirect(request):
if request.user.is_authenticated() and not request.user.is_superuser:
return HttpResponseRedirect(reverse("dashboard"))
elif request.user.is_superuser:
return HttpResponseRedirect(reverse("dashboard"))
我想确定哪个用户登录了?我的意思是它是员工用户、家长用户还是管理员?
model.py
class Student(BaseModel):
user = models.ForeignKey("auth.User",blank=True,null=True,related_name="user_%(class)s_objects")
student_name = models.CharField(max_length=128)
admission_number = models.CharField(max_length=128,null=True,blank=True)
transportation_needs = models.CharField(max_length=128, choices=TRANSPORTATION_NEEDS,blank=True,null=True)
extended_care_need = models.CharField(max_length=128, choices=EXTENDED_CARE_NEED,blank=True,null=True)
nationality = CountryField (blank_label='------( select Your Country)-------',max_length=128,blank=True,null=True)
date_of_birth = models.DateField()
permanent_address = models.CharField(max_length=128,blank=True,null=True)
address_for_communication = models.CharField(max_length=128,blank=True,null=True)
gender = models.CharField(max_length=128, choices=GENDER_CHOICE)
实现此目的的另一种方法是添加组。创建组对象(名称为 "partent"、"student"、"teacher")并将相应的用户添加到该组。通过这种方式,您不必 override/change auth.User 模型。
def login_redirect(request):
if request.user.is_authenticated():
user_groups = request.user.groups.values_list('name', flat=True)
if request.user.is_superuser:
return HttpResponseRedirect(reverse("admin"))
elif "parent" in user_groups:
return HttpResponseRedirect(reverse("parent_dashboard"))
elif "student" in user_groups:
return HttpResponseRedirect(reverse("student_dashboard"))
希望对您有所帮助。
我的 Django 应用程序中有三种类型的人 Admin、Staff 和 Parent。我如何为他们设置登录,因为他们在使用 django 注册登录后会有不同的视图? 到目前为止我的代码是这样的: 在 settings.py
LOGIN_REDIRECT_URL = '/app/login_redirect'
LOGIN_URL = '/app/accounts/login/'
LOGOUT_URL = '/app/accounts/logout/'
并在 views.py 中:
def login_redirect(request):
if request.user.is_authenticated() and not request.user.is_superuser:
return HttpResponseRedirect(reverse("dashboard"))
elif request.user.is_superuser:
return HttpResponseRedirect(reverse("dashboard"))
我想确定哪个用户登录了?我的意思是它是员工用户、家长用户还是管理员? model.py
class Student(BaseModel):
user = models.ForeignKey("auth.User",blank=True,null=True,related_name="user_%(class)s_objects")
student_name = models.CharField(max_length=128)
admission_number = models.CharField(max_length=128,null=True,blank=True)
transportation_needs = models.CharField(max_length=128, choices=TRANSPORTATION_NEEDS,blank=True,null=True)
extended_care_need = models.CharField(max_length=128, choices=EXTENDED_CARE_NEED,blank=True,null=True)
nationality = CountryField (blank_label='------( select Your Country)-------',max_length=128,blank=True,null=True)
date_of_birth = models.DateField()
permanent_address = models.CharField(max_length=128,blank=True,null=True)
address_for_communication = models.CharField(max_length=128,blank=True,null=True)
gender = models.CharField(max_length=128, choices=GENDER_CHOICE)
实现此目的的另一种方法是添加组。创建组对象(名称为 "partent"、"student"、"teacher")并将相应的用户添加到该组。通过这种方式,您不必 override/change auth.User 模型。
def login_redirect(request):
if request.user.is_authenticated():
user_groups = request.user.groups.values_list('name', flat=True)
if request.user.is_superuser:
return HttpResponseRedirect(reverse("admin"))
elif "parent" in user_groups:
return HttpResponseRedirect(reverse("parent_dashboard"))
elif "student" in user_groups:
return HttpResponseRedirect(reverse("student_dashboard"))
希望对您有所帮助。