簡體   English   中英

無需重新加載頁面的Django身份驗證

[英]Django authentication without reloading page

我是前端Web編程的新手,並且正在嘗試模仿iCloud.com登錄頁面。 我有整個布局。 我具有成功登錄時的過渡功能以及失敗登錄時的抖動功能,但是我一輩子都無法弄清楚如何在不更改頁面的情況下使用django檢查用戶身份驗證,然后相應地激活這些功能。 我無法獲得Ajax或任何可用的工具。

任何人都知道如何做到這一點,可以為我指明正確的方向。 現在,我非常確定我要執行的操作是提交ajax表單。

用戶身份驗證沒有什么特別的。 對於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請求,以獲取“登錄成功”模板並刷新需要顯示登錄(已登錄或未登錄)狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM