0

我正在学习 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})  
4

1 回答 1

0

最好的方法是通过一对一的关系将学生和教师都连接到默认用户模型(因为教师和学生最终都是用户,所以有不同的意义没有意义两者的身份验证机制)
通过这个你可以使用 django 默认登录系统。

您可以创建 2 个组。一份给学生,一份给老师。
从管理面板创建教师时,您可以将新教师添加到教师组。

如果你这样做,你甚至不需要存储学生的用户名和密码

您可以通过使装饰器仅允许属于教师组的用户访问这些视图来限制学生对某些 url 的访问。

这可能看起来很复杂,实际上,这比制作自己的身份验证系统更容易、更安全。

于 2018-08-01T19:11:04.360 回答