Django身份验证无需重新加载页面

时间:2014-01-16 06:23:17

标签: python ajax django json django-authentication

我对前端网络编程比较陌生,我正试图模仿iCloud.com登录页面。我有整个布局。我有成功登录过渡的功能以及不成功登录时的摇晃但我不能在我的生活中弄清楚如何在不更改页面的情况下使用django检查用户身份验证,然后相应地激活这些功能。我无法获得ajax或任何工作。

任何人都知道如何做到这一点可以指出我正确的方向。现在我很确定我要做的是提交一个ajax表单。

1 个答案:

答案 0 :(得分:0)

用户身份验证并不特别。对于ajax和非ajax视图,它的工作方式相同。

我建议你首先使用ajax来实现身份验证。确认它正在运行,然后去找ajax。

但简单的例子是:

1)将登录网址添加到网址

from django.contrib.auth import views as auth_views
....
url(r'^authenticate/$',
        auth_views.login,
        {'template_name': 'yourapp/login.html'},
        name='auth_login'),

如您所见,您可以将模板作为关键字参数提供给该视图。因此,您可以使用djangos自己的身份验证视图来使用模板进行身份验证

2)添加指向您的页面的链接,点击它之后。获取请求并读取模板并将其放入某种模态中。这相对简单,许多jQuery模态插件都支持此功能。我已经多年没有使用jQuery所以找到可靠的例子对你来说可能和我一样容易

3)模态窗口将显示您自己的login.html。在该文件中,您将表单发布到它来自的相同URL。您可以通过将表单操作属性设置为{{ request.get_full_path }}

来实现

4)你还必须实现一些js代码,它们会在提交时重置表单以显示登录错误。

5)成功提交后,可能是最困难的部分,因为你必须在这里做大部分编码。使用django视图登录后,如果不使用ajax,则会重定向。您可以通过两种方式处理它 - 期望它并使用返回的重定向作为提示您可以显示“登录成功”消息或向服务器发出另一个ajax请求以获取“登录成功”模板并刷新您站点的需要的区域显示登录(登录或不登录)状态。