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用户配置文件图像上传访问错误