繁体   English   中英

创建新用户时出现AttributeError

[英]AttributeError when creating a new user

我收到此错误:

Internal Server Error: /signup/
Traceback (most recent call last):
  File "C:\python\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
    response = get_response(request)
  File "C:\python\lib\site-packages\django\utils\deprecation.py", line 142, in __call__
    response = self.process_response(request, response)
  File "C:\python\lib\site-packages\django\middleware\clickjacking.py", line 32, in process_response
    if response.get('X-Frame-Options') is not None:
AttributeError: 'str' object has no attribute 'get'

尝试渲染此视图时:

def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            new_user = form.save(commit=False)
            new_user.is_active = False
            new_user.save()
            current_site = get_current_site(request)
            subject = "Activate your DC-Elects account"
            message = render_to_string('registration/account_activation_email.html', {
                'user': new_user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(new_user.id)),
                'token': account_activation_token.make_token(new_user),
            })
            new_user.email_user(subject, message)
            return reverse('elections:account_activation_sent')
    else:
        form = SignUpForm()
    return render(request, 'registration/signup.html',{
        'form': form,
    })

错误消息的描述性不是很高,但是电子邮件正确地发送了链接,因此,对于为什么出现错误,我感到非常困惑。 如何防止此错误并正确渲染下一个视图?

Django的view函数应该返回HttpResponse对象。 reverse只是一种生成url字符串而不是响应对象的方法,因此此行:

return reverse('elections:account_activation_sent')

引发错误。

如果需要重定向,请使用redirect快捷方式:

return redirect('elections:account_activation_sent')

暂无
暂无

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

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