Javascript 尝试使用Fancybox/Ajax处理登录错误
我正在构建我的第一个网页(Django 1.5、Python2.7、Fancybox 2),所以我不确定我的错误在哪里,因为我一下子就学到了很多东西 我希望我的用户能够通过弹出的Fancybox模式登录或注册。我已经把这些都做好了,但我需要处理错误(例如,用户留下一个空白字段)。我想用一条错误消息重新渲染模式,但我不确定如何构造它。以下是我目前掌握的情况: 视图.pyJavascript 尝试使用Fancybox/Ajax处理登录错误,javascript,python,ajax,django,fancybox-2,Javascript,Python,Ajax,Django,Fancybox 2,我正在构建我的第一个网页(Django 1.5、Python2.7、Fancybox 2),所以我不确定我的错误在哪里,因为我一下子就学到了很多东西 我希望我的用户能够通过弹出的Fancybox模式登录或注册。我已经把这些都做好了,但我需要处理错误(例如,用户留下一个空白字段)。我想用一条错误消息重新渲染模式,但我不确定如何构造它。以下是我目前掌握的情况: 视图.py def base(request): if request.method == "GET": retur
def base(request):
if request.method == "GET":
return render_to_response("base.html", {}, RequestContext(request))
else:
response_dict = {'error' : None}
if "login" in request.POST:
email = request.POST.get('email', False)
password = request.POST.get('password', False)
if email and password:
user = authenticate(username=email, password=password)
response_dict.update({'email':email, 'password':password})
if user:
name = "{0} {1}.".format(user.first_name, user.last_name[0])
print name
else:
response_dict['error'] = "No user found with that email/password."
else:
response_dict['error'] = "Please fill out all fields."
if response_dict['error']: //seems like something is missing here?
render_to_response("base.html", {'error_message':response_dict['error']}, RequestContext(request))
base.js
$("#login_fancy").fancybox({
'scrolling' : true,
helpers : {
title : null
}
});
$("#login_form").bind("submit", function(){ //this is all clearly wrong, as it never gets called--I can comment out the whole thing with no change
console.log("login submitted");
$.fancybox.showActivity();
$.ajax({
type: "POST",
cache: false,
url: "/login/",
data: $(this).serializeArray(),
success: function(data){
$.fancybox(data);
}
});
return false;
});
html
<div id="login">
<a id="login_fancy" title="Login" href="#login_form">Login</a> or <a id="newuser_fancy" title="Newuser" href="#newuser_form">Register</a>
</div>
<div style="display:none">
{% if form.errors %}
<p class="error">{{ error_message }}
{% endif %}
<form id="login_form" action="" method="POST">
{% csrf_token %}
<label for="email">Email:</label>
<input type="text" name="email" value="" id="email">
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" name="login" value="Log In" />
</form>
</div>
或
{%if form.errors%}
{{error\u message}
{%endif%}
{%csrf_令牌%}
电邮:
密码:
您的JS需要包含在文档中。准备好处理程序
您的提交处理程序从未注册,因为此时页面上不存在表单
您应该在
上使用$。或使用文档.ready
处理程序
然后,在ajas处理程序中,您可以添加逻辑以在表单中显示验证错误。页面中的脚本包括在哪里?base.js作为html头部的最后一项。为了清楚起见,我能够登录并注册新用户;我只是不知道如何在fancybox中添加一条错误消息。对于如何使用ajax(如果这是最好的方法),我仍然有些困惑。我正在使用django的用户身份验证库——我能通过ajax使用它吗?@Thumbtack当然,这是我的错:我如何通过ajax使用它?