Django-Ajax模式登录/注册

我有一个项目,其中我需要弹出一个未经身份验证用户的模式窗口

此模式将允许直接登录或创建帐户

因此,它将包含两种形式:

  • django.contrib.auth.forms.AuthenticationForm
  • registration.forms.RegistrationForm

以下是我对两种形式的看法:

def ajax\u注册(请求):
obj={
“登录表单”:AuthenticationForm(),
“注册表单”:注册表单(),
}
返回渲染(请求'common/ajax_registration.html',obj)

和我的模板显示的形式选项卡

<ul class=“导航标签”>
<李&gt&书信电报;a href=”“data toggle=“tab”>{%trans'登录'%}&lt/a&gt&lt/李>
<李&gt&书信电报;a href=”“data toggle=“tab”>{%trans'注册“%}&lt/a&gt&lt/李>
&lt/ul>
<div class=“选项卡内容”>
<div class=“tab pane active”id=“tab1”>
{{login_form | bootstrap}}
&lt/部门>
<div class=“tab pane”id=“tab2”>
{{注册|自举}
&lt/部门>
&lt/部门>

问题是:由于我使用ajax显示此模式,如何验证所选表单,最好使用已经编写的django注册寄存器&ampdjango.contrib.auth登录views

除了Maddog的答案之外,还需要一些javascript将表单提交回呈现表单的URL。使用jquery,它可能类似于:

$('form')。提交(函数(e){
e、 预防默认值();
变量形式=$(e.target);
$.ajax({
url:“{%url您的\u注册\u url%}”,
键入:“post”,
数据:account_form.serialize(),
错误:函数(xhr,ajaxOptions,thrownError){alert(thrownError);},
成功:函数(){}
})
})

您不需要使用表单提交元素,您可以使用带有$()的任何元素。当然,单击()

发表评论