Django用户注册身份验证问题

时间:2020-11-06 18:25:23

标签: python django authentication registration

请问我是Django的新手,而且用户注册让我头疼。 UserCreationForm显示在页面上,但即使我故意输入错误并提交密码也不会显示任何错误,它只会刷新。与登录页面不同,它不会显示诸如密码太短之类的错误。

主项目的Urls.py

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/',include('django.contrib.auth.urls')),
path('',include('account.urls')),
]

account_app的Urls.py

from django.urls import path
    from .views import home,register
    urlpatterns = [
    path('',home,name='home'),
    path('register/',register,name='register'),]

account_app的Views.py

 from django.shortcuts import render,redirect
    from django.contrib.auth.forms import UserCreationForm
    from django.contrib.auth import authenticate,login
    def home(request):
        return render(request,'base.html')
    def register(request):
        if request.method == 'POST':
            form = UserCreationForm(request.POST)
            if form.is_valid():
                form.save()
                username = form.cleaned_data['username']
                password = form.cleaned_data['password1']
                user =authenticate(username=form,password=password)
                login(request,user)
                return redirect('home')
          else:
              form = UserCreationForm()
          form = UserCreationForm()
       return render(request,'registration/register.html',{'form':form})

模板文件夹如下

 +templates
        +registration
            +register.html

Register.html代码

<!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>Register</title>
      </head>
    <body>
        <h1>Registration Page</h1>
        <form method="POST" action="{%url 'register' %}">
          {%csrf_token %}
          {% if form.errors %}
              <p>There are errors in the form    </p>
          {% endif %}
          {{form}}
          <button type="submit" name="button">Submit</button>
          </form>
         </body>
</html>

1 个答案:

答案 0 :(得分:0)

您的注册视图中还有一个form = UserCreationForm()

尝试将其删除,以便您可以使用:

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data['username']
            password = form.cleaned_data['password1']
            user =authenticate(username=form,password=password)
            login(request,user)
            return redirect('home')
        else:
            form = UserCreationForm()
    return render(request,'registration/register.html',{'form':form})