我正在学习django框架,我陷入了一个教师/学生问题,我有一个学生模型,其中我有学生用户名和密码,而教师帐户是直接从管理站点用户模型创建的,我使用django的内置登录系统成功地为教师创建了登录。现在我想让学生登录,他们的用户名/密码存储在学生models.In中--我的情况下,学生帐户(用户名和密码)是由他们的老师创建的,并且存储在学生model.So中,学生只需要登录,而我只有一个登录表单(教师和学生)。我如何通过学生模型的检查来登录学生,我已经搜索过了,但这让我对此有了一些帮助。
下面是从管理站点创建的教师登录代码:
class loginform(View):
template_name='IEL/Login.html'
form_class=UserForm
def get(self,request): # if the request is get then only view the function
form=self.form_class(None)
return render(request, self.template_name, {'form': form})
def post(self,request):
form=self.form_class(request.POST)
if form.is_valid():
#user = form.save(commit=False) # it doesnot save in database, it is used to et clean the values
# clean data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
# authenticate user:
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('IEL:file')
else:
msg = 'Errors: %s' % form.errors.as_text()
return HttpResponse(msg, status=400)
return render(request, self.template_name, {'form': form}) 发布于 2018-08-01 19:11:04
这样做的最好方法是通过一对一的关系将学生和教师连接到默认的用户模型(因为教师和学生最终都是用户,因此对两者都有不同的身份验证机制是没有意义的)。
这样,您就可以使用django默认登录系统。
您可以创建两个组。一个给学生,一个给老师。
当从管理面板创建教师时,您可以将新教师添加到教师组中。
如果您这样做,您甚至不需要存储学生的用户名和密码
您可以通过设置装饰器来限制学生对某些urls的访问,以便只允许属于教师组的用户访问这些视图。
这可能看起来很复杂,实际上,这比创建您自己的身份验证系统更容易,也更安全。
https://stackoverflow.com/questions/51615795
复制相似问题