Django-allauth再次重定向到注册/登录表单

3

我正在使用django-allauth进行本地账户管理。我已经定制了模板login.html和signup.html,这两个模板都放置在templates/account/目录下,并且都可以正常访问。

网站根目录即localhost:8000指向index.html,在主页面上使用了{% include%}包含了这两个模板。

signup.hmtl中的注册表单action设置为action="{% url 'account_signup' %}",而login.html的设置为"{% url 'account_login' %}"

这两个模板都可以正确显示在主页上。当我尝试使用这些表单进行登录或注册时,问题出现了。我被重定向到locahost:8000/accounts/signup/进行注册,localhost:8000/accounts/login/进行登录。我猜测我使用的是正确的url,也就是account_signupaccount_login

我已经设置了所有allauth的设置。这是默认行为还是我漏掉了什么?提前感谢!

1个回答

0

我花了几个小时终于解决了这个问题。以防其他人遇到同样的情况,我想分享我的解决方案。问题是表单通过使用前缀SignUpForm(prefix=signupform)由视图实例化,因此allauth类AjaxCapableProcessFormViewMixin(object)(我不知道它是如何工作的)无法从字段中获取数据,而且它的if form.is_valid()始终为false,因为表单具有错误消息字典,其中包含所有字段的此字段是必需的。为了测试,我从表单实例化中删除了Prefixing,然后它就可以工作了,但这让我感到奇怪,因为这些隐藏的错误可能需要无限长的时间来解决,特别是对于像我这样的新手。

class AjaxCapableProcessFormViewMixin(object):

   def post(self, request, *args, **kwargs):
       form_class = self.get_form_class()
       form = self.get_form(form_class)
       if form.is_valid():
           response = self.form_valid(form)
       else:
           response = self.form_invalid(form)
       return _ajax_response(self.request, response, form=form)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接