在我的项目中,我有两个名为学生和教师的模型。这两个模型是User的OneToOne字段。我有3个应用程序:主页(索引页,常见问题,关于...),老师(老师的界面,管理她的课程,编辑个人资料...)和学生(学生的界面,个人资料...)
我有一个登录表单(在应用程序主页中),我想用它来登录教师和学生,并在身份验证后重定向到正确的应用程序。这样做的最佳方法是什么?我认为要创建两个小组(教师和学生),并在注册表格后分配给正确的小组,然后在登录表格中检查该小组?
PS:学生可以创建一个帐户,但是对于老师来说,我们的团队可以创建帐户,因此我们没有老师的注册表
如果与用户表的关系是OneToOne,则可以从user.student或user.teacher访问它,因此您可以执行此操作...
def login_view(request):
if form.is_valid():
# get user from form
_user = form.get_user()
user = authenticate(form.cleaned_data['username'], form.cleaned_data['password'])
login(request, user)
if hasattr(user, 'student'):
# You'll return to student app
return redirect('studen:home')
# else
return redirect('teacher:home')
编辑
decorators.py
...
from django.contrib.auth.decorators import user_passes_test
def group_required(*args):
if args:
def decorator(user):
if user.is_staff or user.is_superuser:
return True
return user.is_authenticated() and user.groups.filter(name__in=args).exists()
else:
decorator = lambda x: x.is_authenticated()
return user_passes_test(decorator)
...
并使用它...
...
@group_required('student')
def home_student(request):
# some code
@group_required('teacher', 'student'):
def common_view_for_all(request):
# some code
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句