我有一个有关学校系统的项目,该项目有3种类型的用户
Staff
,Student
和Lecturer
。
类型为Staff
的用户的url配置将具有一个类似.com/staff/ something/something
的url。例如:.com/staff/account-management
同样,.com/student/something/something
代表Student
个用户,{{11}}代表.com/lecturer/
。
如果学生访问Lecturers
用户的网页或类似的网址,例如Staff
或.com/staff/account-management
,我想显示一个网页,显示您没有权限访问此页面
最后,一种类型的用户无法访问另一种用户类型的网址。
此外,每次我加载.com/staff/resources-management
网页时,我都需要名字和全名以及注册的课程。
对于student
网页,我需要名字和全名以及讲师教的课。
对于lecturer
网页,我只需要名字和全名。
这是由其他模板扩展的base.html用途
此base.html包含需要这些信息的导航栏
这是我的方法:
在学生staff
中,有一个名为views.py
和check_user
的视图
student_homepage
check_user(request)
user = request.user
std = Student.objects.filter(user=user).first()
if std is not None :
get all of the classes he is currently studying and put it in class_display
context = {'role' : 'STUDENT', 'f_name' : user.first_name, 'l_name' : user.last_name, 'class_display' = class_display}
return context
else:
check if the user is an Employee object
if it is an Employee object,
check if it is a staff or a lecturer
if it is a staff,
context = {'role' : 'STAFF', 'f_name' : user.first_name,
'l_name' : user.last_name, msg='You are not authorized to see
this page'}
if it is a lecturer,
get all the classes he is currently teaching and put it in
class_display
context = {'role' = 'LECTURER', 'f_name' : user.first_name,
'l_name' : user.last_name, msg='You are not authorized to see
this page','class_display = class_display}
if it is not student or employee
context = {'role' = 'none', msg='Unidentified account
type','class_display = class_display}
扩展了base.html,errorpage.html
具有一个按钮,供errorpage.html
在读取错误消息后返回其lecturer/administrative
。
homepage
这行得通,但似乎是一种不好的方法,因为对于呈现学生页面的每个学生视图,我必须检查用户的角色。有没有一种方法只能编写一次,但它适用于以.com / student开头的所有URL?我有一个URL .com / student的视图,该URL最初将重定向到学生主页,但我认为只有在我转到.com / student时才能调用它。