我正在学习django框架,陷入了教师/学生的问题。我有一个学生模型,其中有学生的用户名和密码,而教师帐户是直接从管理站点用户模型创建的。使用django的内置登录系统。现在我想让学生登录,他们的用户名/密码存储在学生模型中。在我的情况下,学生帐户(用户名和密码)由他们的老师创建并存储在学生模型中。所以学生只需要登录,我就可以仅具有一个登录表单(教师和学生均可)。 如何通过查看学生模型来登录学生。我已经搜索过它,但是这使我感到困惑。对此需要一些帮助。
在下面是从管理网站创建的教师登录代码:
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})
答案 0 :(得分:0)
最好的方法是通过一对一关系将学生和老师都连接到默认的用户模型(因为老师和学生最终都是用户,所以它不是用户)为两者使用不同的身份验证机制很有意义)。
这样,您可以使用django默认登录系统。
您可以创建2个群组。一个给学生,一个给老师。
在管理面板中创建教师时,您可以将新教师添加到教师组中。
如果这样做,您甚至不需要存储学生的用户名和密码
通过将装饰器设置为仅允许属于教师组的用户访问这些视图,可以限制学生访问某些URL。
这看起来似乎很复杂,实际上,这比建立自己的身份验证系统要容易和安全得多。