簡體   English   中英

Django 錯誤的用戶名,自定義用戶密碼 model

[英]Django wrong username, password for custom user model

我使用“OneToOneField”創建了自定義用戶 model。 我已經創建了注冊和登錄系統,但只有注冊有效,我可以注冊新用戶,但是,當我嘗試使用該創建的用戶登錄時,Django 不允許我通過顯示我的自定義消息“用戶名或密碼是”來登錄錯誤的'。 我仔細檢查了用戶名和密碼,它是正確的,但 Django 仍然不允許我登錄。

這是我的代碼。

模型.py

class Vendor(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE)
    phone_number = models.CharField(max_length = 12, blank = True)

forms.py

class SignInForm(forms.Form):
    username = forms.CharField(max_length = 20, widget = forms.TextInput(attrs = {'class': 'form-control', 'placeholder': 'Username'} ))
    password = forms.CharField(max_length = 15, widget = forms.PasswordInput(attrs = {'class': 'form-control', 'placeholder': 'Password'} ))

視圖.py

form = self.form(request.POST)
if form.is_valid():
    username = form.cleaned_data.get('username')
    password = form.cleaned_data.get('password')

    user = authenticate(username = username, password = password)
    if user:
        if user.is_active:
            login(request, user)
            return redirect('dashboard')
        else:
            messages.error(request, 'Your email address is not verified. Please verify it')
    else:
        messages.error(request, 'Username or password is wrong')
form = LoginForm(request.POST or None)
context = {

    "form":form
}


if form.is_valid():
    print(form.cleaned_data)
    username = form.cleaned_data.get("username")
    password = form.cleaned_data.get("password")

    user = authenticate(request, username=username, password=password)

    if user is not None:
        print(request.user.is_authenticated)
        login(request, user)
        context['form'] = LoginForm()
        return redirect("/")
    else:
        print('Error')

return render(request, "MainApp/login.html", context)
  1. 您需要為表單添加上下文字典
  2. 使用is not None條件而不是if user
  3. 這一行是去掉用戶提交表單后輸入的key context['form'] = LoginForm()

我相信這可以解決您的問題

暫無
暫無

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

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