简体   繁体   English

Django用户注册认证问题

[英]Django User Registration Authentication Problem

Please I am new to Django and user registration is giving me serious headache.请我是 Django 的新手,用户注册让我很头疼。 The UserCreationForm displays on the page but does not display any errors even when I deliberately pass in wrong and submit passwords.It just refreshes. UserCreationForm 显示在页面上,但即使我故意输入错误并提交密码也不显示任何错误。它只是刷新。 It does not show errors like password too short etc unlike the login page.与登录页面不同,它不会显示密码太短等错误。

Urls.py for Main Project主项目的 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')),
]

Urls.py for account_app account_app 的 Urls.py

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

Views.py for account_app 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})

Template folder looks like this模板文件夹看起来像这样

 +templates
        +registration
            +register.html

Register.html code注册.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>

You have an extra form = UserCreationForm() in your register view.您的注册视图中有一个额外的form = UserCreationForm()

try removing it so that you are left with :尝试删除它,以便您留下:

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})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM