Django 3.0 值错误

Posted

技术标签:

【中文标题】Django 3.0 值错误【英文标题】:Django 3.0 ValueError 【发布时间】:2020-04-08 13:42:25 【问题描述】:

大家好,django 3.0 有问题。我正在尝试创建一个用户注册页面,但我不断收到错误。这些是我的代码

users/views.py

from .form import UserRegisterForm
from django.shortcuts import render, redirect


# Create your views here.


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
        else:
            form = UserRegisterForm()
        return render(request, 'register.html', 'form': form)

form.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

register.html

% extends 'website/base.html' %


% block body %
    % include 'website/nav_bar.html' %

    <div>
        <form method="post">
            % csrf_token %
            <fieldset>
                <legend>join now</legend>
                 form.as_p 
            </fieldset>
            <button type="submit">submit</button>
        </form>
    </div>
% endblock body %

ERROR MESSAGE

【问题讨论】:

您的注册中目前没有任何GET 请求句柄 是的,因为如果请求处理程序是 GET ,则没有 return 语句。它将为/register/ 中的所有GET 请求返回None 对象。 【参考方案1】:

这里

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
        else:
            form = UserRegisterForm()
        return render(request, 'register.html', 'form': form)

你忘记了普通GET请求的情况:)

类似的东西

def register(request):
    form = UserRegisterForm()

    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
    return render(request, 'register.html', 'form': form)

更多详情请访问文档网站https://docs.djangoproject.com/en/3.0/topics/forms/#the-view

【讨论】:

@DadaOluwabukunmiEmmanuel 所以你可以接受答案,如果它有效:)

以上是关于Django 3.0 值错误的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 工作,但 PostgreSQL 迁移数据库导致错误 - Django 3.0

AWS S3存储桶Django 3.0用户配置文件图像上传访问错误

django 编码错误

django2.0和3.0的区别

Django 3.x错误:'mysql.connector.django'不是可用的数据库后端

django 3.0 异步 orm