没有返回响应 - 重复django用户

时间:2017-11-17 06:46:13

标签: python json django django-forms django-views

我有一个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

1 个答案:

答案 0 :(得分:0)

form.is_valid()返回False时,您尚未处理案例。在这种情况下,您的视图会返回None