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

时间:2014-08-17 13:21:08

标签: django django-allauth

我正在使用django-allauth进行本地帐户管理。我有自定义模板,login.html和signup.html。这两个模板都放在templates / account / dir中,并且两者都可以正常访问。 网站根,即 localhost:8000 指向index.html,其中包括在主页上使用 {%include%} 这两个模板。

signup.hmtl中的注册表单的表单操作设置为 action =“{%url'count_signup'%}”,login.html的表单操作设置为“{%url 'account_login'%}“

两个模板在主页面上都显示为OK。当我尝试将这些表单用于sigin / login时会出现问题。而是处理POST以进行注册或登录我将重定向到 locahost:8000 / accounts / signup / 进行注册,使用 localhost:8000 / accounts / login / 进行登录。我想我正在使用 account_signup account_login

的正确网址

我有allauth的所有设置。这是默认行为还是我遗漏了一些东西?感谢期待

1 个答案:

答案 0 :(得分:0)

好吧,我花了几个小时后设法摆脱了这个问题。为了防止其他人陷入同样的​​情况,我想分享我的解决方案。问题是View已使用前缀SignUpForm(prefix=signupform)实例化了表单,因此allauth class AjaxCapableProcessFormViewMixin(object)(我不知道它是如何工作的)无法从字段中获取数据其if form.is_valid()始终为false,因为表单包含错误消息字典包含此字段是必填表单中的所有字段。 Jus测试我从表单实例中删除Prefixing并且它工作但让我感到奇怪,因为这些隐藏的错误可能需要无限期的时间来解决,特别是对于像我这样的一些niwbie

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)