如何在Django URL中传递请求

时间:2018-07-08 10:16:52

标签: django django-views django-request

我有这个网址:(Django 2.0)

re_path('auth/(?P<code_>[a-zA-Z0-9]{12})/(?P<email_>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', homePageView.autenticate, name='autenticate'),

在我的 views.py 中:

class homePageView(TemplateView):
    template_name = 'index.html'

def autenticate(self, email_, code_):
    try:
        user = Usuario.objects.get(email=email_,activated_code=code_)
        code = user.two_factors_auth_code
        if (not user.two_factors_auth) and (code == code_) and (len(code) == 12):
            user.next_login = True
        user.save()
        return redirect('home')
    except Usuario.DoesNotExist:
        return redirect('home')

我希望我可以使用autenticate方法登录用户,但是我的函数中没有请求参数。

¿如何将我的autenticate函数转换为另一个函数?

class homePageView(TemplateView):
    template_name = 'index.html'

def autenticate(self, request, email_, code_):
    try:
        user = Usuario.objects.get(email=email_,activated_code=code_)
        code = user.two_factors_auth_code
        if (not user.two_factors_auth) and (code == code_) and (len(code) == 12):
            user.next_login = True
        user.save()
        ####################
        login(request,user)
        ####################
        return redirect('home')
    except Usuario.DoesNotExist:
        return redirect('home')

1 个答案:

答案 0 :(得分:0)

您在诸如基于函数的视图之类的视图中使用身份验证方法。

在此方法中,第一个参数是请求。仅将第一个参数重命名为request并完成