当我使用cleaning_data时,为什么我没有得到干净的数据

Moh*_*re3 5 python forms authentication django login

我正在尝试为我的网站创建一个登录表单,但是当我在views.py中使用cleaning_data时,我得不到正确的数据.这是我的代码:

views.py

def login_page(request):
    form = LoginForm(request.POST or None)
    context = {
        'form': form
    }
    if form.is_valid():
        print(form.cleaned_data)
        username = form.cleaned_form.get("username")
        password = form.cleaned_form.get("password")
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect("/")
        else:
            print("Error")
    return render(request, "auth/login.html", context)
Run Code Online (Sandbox Code Playgroud)


forms.py

class LoginForm(forms.Form):
    username = forms.CharField(
        widget=forms.TextInput(
            attrs={
                "class": "form-control",
                "placeholder": "Username"
            }
        )
    )
    password = forms.CharField(
        widget=forms.PasswordInput(
            attrs={
                "class": "form-control",
                "placeholder": "Password"
            }
         )
    )
Run Code Online (Sandbox Code Playgroud)


的login.html

<form action="POST">{% csrf_token %}
    {{ form }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)


这是我填写用户名和密码字段并点击提交时得到的内容.print(form.cleaned_data)显示我想要使用的url字段中有数据,但我无法访问它们.

安慰

Exp*_*tor 6

你的观点是完全错误的,使用它

def login_page(request):
   form = LoginForm(request.POST or None)
   context = {
    'form': form
   }
   if request.method == 'POST':
      if form.is_valid():
          print(form.cleaned_data)
          username = form.cleaned_data["username"]
          password = form.cleaned_data["password"]
          user = authenticate(request, username=username, password=password)
          if user is not None:
             login(request, user)
             return redirect("/")
          else:
             print("Error")
      else:
          print('form not valid')
return render(request, "auth/login.html", context)
Run Code Online (Sandbox Code Playgroud)

和HTML到

<form method="post" action="">
    {% csrf_token %}
    {{ form }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)