我正在使用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的所有设置。这是默认行为还是我遗漏了一些东西?感谢期待
答案 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)