簡體   English   中英

為什么我的表單驗證在 django 中不起作用?

[英]Why doesn't my form validation work in django?

我正在嘗試在我的 django 社交媒體/博客應用程序中進行用戶驗證。 我不明白為什么這段代碼不起作用。 問題:無論我在表單中輸入什么名稱,它都說用戶不存在,即使用戶確實存在。 任何幫助都會很棒。

from django.shortcuts import render, redirect
from sign_in.forms import SignInForm 
from django.contrib.auth.models import User
from django.contrib import messages
from django.contrib.auth.forms import forms
from django.http import HttpResponseRedirect

def sign_in(request):
    if request.method == "POST":
        form = SignInForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = User.objects.filter(username=username, password=password)
            if user.exists():
                return HttpResponseRedirect("boom/")
            else:
                messages.error(request, f"User {user} does not exist.")
    else:
        form = SignInForm()

    return render(request, "sign_in/sign_in.html", {"form": form})

這不是 Django 身份驗證的工作方式。

https://docs.djangoproject.com/en/3.1/topics/auth/

使用認證方法

嘗試這個

from django.contrib.auth import login, authenticate

def sign_in(request):
    if request.method == "POST":
        form = SignInForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(username=username, password=password)
            login(request, user)
            if user.exists():
                return HttpResponseRedirect("boom/")
            else:
                messages.error(request, f"User {user} does not exist.")
    else:
        form = SignInForm()

    return render(request, "sign_in/sign_in.html", {"form": form})

暫無
暫無

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

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