我有一个django项目。我已将djangos注册和登录系统集成到我的应用程序中。我有一种创建用户并将其记录到当前会话的方法。我注意到当我尝试为数据库中具有现有用户名的用户创建记录时,不会给出唯一约束失败或重定向到另一个页面,它只会引发以下错误:
ValueError at /signup/
The view users.views.user_signup didn't return an HttpResponse object. It returned None instead.
Request Method: POST
Request URL: http://127.0.0.1:8000/signup/
Django Version: 1.11.5
Exception Type: ValueError
Exception Value:
The view users.views.user_signup didn't return an HttpResponse object. It returned None instead.
Exception Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response, line 198
Python Executable: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Python Version: 3.6.2
Python Path:
['/Users/omarjandali/Desktop/split/split',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
现在我正在使用打印和日志记录查看此问题发生的位置,并且没有打印任何内容。我觉得这个形式没有采用它所调用的方法......我不知道这是怎么回事。谁能帮忙......
进程= 如果表格未提交 - >显示来自 填写 - >从表单中获取信息 - >抓住useranem并查看是否已有此用户名或电子邮件的帐户 - >如果没有帐户 - >创建并保存用户对象 - >将用户登录到会话===>如果帐户 - >重定向到测试页面...这是我的代码:
def user_signup(request):
if request.method == "POST":
form = SignupForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
username = cd['username']
password = cd['password']
verify = cd['verify']
email = cd['email']
valid_user = User.objects.filter(username = username).first()
if valid_user == None:
if password == verify:
secure_password = make_password(password)
user = User.objects.create(
username = username,
password = secure_password,
email = email,
)
login(request, user)
return redirect('test')
else:
form = SignupForm()
parameters = {
'form':form,
}
return render(request, 'users/signup.html', parameters)
else:
return redirect('test')
else:
form = SignupForm()
parameters = {
'form':form
}
return render(request, 'users/signup.html', parameters)
表单显示,我可以填写它,但第二个我提交表单,一切都出错....表单存在于我的forms.py文件中。我不知道为什么它告诉我有没有http响应。
我在表单中有一个重新验证的错误,我想从错误响应中获取消息。
响应是下面的json repsonse:
{"username":
[
{
"message": "A user with that username already exists.",
"code": "unique"
}
]
}
我想抓住这条消息。我有以下代码来抓取消息......它无法正常工作......
error_json['username'][0]['message']
错误消息:
string indices must be integers
答案 0 :(得分:0)
form.is_valid()
返回False
时,您尚未处理案例。在这种情况下,您的视图会返回None
。