簡體   English   中英

有沒有辦法在 django 的驗證方法中傳遞表格 Object

[英]Is there a way to pass in an Form Object in an authenticate method in django

我試圖在 authenticate() 方法中傳遞一個表格 object 但它說沒有用戶名和密碼的屬性。 是否有特定的方法可以驗證此表單。 我已經從 forms 和 auth.models 導入了所有內容

我的觀點.PY

def user_login(request):

    if request.method == 'POST':

        login_info = LoginForm(request.POST)
        
        

        user = authenticate(username = login_info.username, 
        password=login_info.password)

        

        if user:

            login(request,user)


            return HttpResponse(reversed('index'))

        else:
           return HttpResponse("Wrong")

    else:
        login_info = LoginForm()
    
    return render(request,"login.html",{'logininfo':login_info})
 MY FORMS.PY
class LoginForm(forms.Form):
    username = forms.CharField(label = 'Your username')
    password = forms.CharField(label= "Don't tell any but us",widget=forms.PasswordInput())
    
    

有不同的方法嗎

user = authenticate(username = login_info.username, password=login_info.password)

表單中的數據可通過cleaned_data字典獲得。

因此,您的身份驗證行將是:

user = authenticate(username=login_info.cleaned_data['username'], password=login_info.cleaned_data['password'])

但是, cleaned_data僅在您驗證表單后可用。 所以你的代碼應該是這樣的:

login_info = LoginForm(request.POST)
if login_info.is_valid():
    user = authenticate(username=login_info.cleaned_data['username'], password=login_info.cleaned_data['password'])
    # rest of the code
else:
    return HttpResponse("Wrong") # or display the same form with the errors

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM