django 提供內建的檢視(view)函式用於處理登入和退出 (以及其他奇技淫巧),但在開始前,我們來看看如何手工登入和退出。 django提供兩個函式來執行django.contrib.auth\中的動作 : authenticate()和login()。
認證給出的使用者名稱和密碼,使用 authenticate() 函式。它接受兩個引數,使用者名稱 username 和 密碼 password ,並在密碼對給出的使用者名稱合法的情況下返回乙個 user 物件。 如果密碼不合法,authenticate()返回none。
>>> from django.contrib import auth
>>> user = auth.authenticate(username='john', password='secret')
>>> if user is not none:
... print "correct!"
... else:
... print "invalid password."
authenticate() 只是驗證乙個使用者的證書而已。 而要登入乙個使用者,使用 login() 。該函式接受乙個 http 物件和乙個 user 物件作為引數並使用django的會話( session )框架把使用者的id儲存在該會話中。
下面的例子演示了如何在乙個檢視中同時使用 authenticate() 和 login() 函式:
登出乙個使用者,在你的檢視中使用 django.contrib.auth.logout() 。 它接受乙個httprequest物件並且沒有返回值。
注意,即使使用者沒有登入, logout() 也不會丟擲任何異常。
在實際中,你一般不需要自己寫登入/登出的函式;認證系統提供了一系例檢視用來處理登入和登出。 使用認證檢視的第一步是把它們寫在你的urlconf中。 你需要這樣寫:
from django.contrib.auth.views import login, logout
urlpatterns = patterns('',
# existing patterns here...
(r'^accounts/login/$', login),
(r'^accounts/logout/$', logout),
)/accounts/login/ 和 /accounts/logout/ 是django提供的檢視的預設url。
預設情況下, login 檢視渲染 registragiton/login.html 模板(可以通過檢視的額外引數 template_name 修改這個模板名稱)。 這個表單必須包含 username 和 password 域。如下示例: 乙個簡單的 template 看起來是這樣的
sorry, that's not a valid username or password
user name:
password:
如果使用者登入成功,缺省會重定向到 /accounts/profile 。 你可以提供乙個儲存登入後重定向url的next隱藏域來過載它的行為。 也可以把值以get引數的形式傳送給檢視函式,它會以變數next的形式儲存在上下文中,這樣你就可以把它用在隱藏域上了。
logout檢視有一些不同。 預設情況下它渲染 registration/logged_out.html 模板(這個檢視一般包含你已經成功退出的程式設計客棧資訊)。 檢視中還可以包含乙個參nzvsjj數 next_page 用於退出後重定向。
本文標題: 詳解django框架中使用者的登入和退出的實現
本文位址: /jiaoben/python/128518.html
詳解Python的Django框架中的中介軟體
什麼是中介軟體 我們從乙個簡單的例子開始。高流量的站點通常需要將django部署在負載平衡proxy之後。這種方式將帶來一些複雜性,其一就是每個request中的遠端ip位址 request.meta remote ip 將指向該負載平衡proxy,而不是發起這個request的實際ip。負載平衡p...
基於Django使用者認證系統詳解
一.認證系統概要 create user 建立使用者 aut程式設計客棧henticate 驗證登入 login 記住使用者的登入狀態 logout 退出登入 is authenticated 判斷使用者是否登入 login required 判斷使用者是否登入的裝飾器 二.建立使用者和驗證登入 當...
Django框架之 使用者認證auth模組
我們在開發乙個 時,無法避免的需要設計 的使用者系統,此時我們需要實現包括使用者註冊,登入,認證,登出,修改密碼等功能,把這些事全部寫一遍也挺麻煩的,django作為乙個完美主義的終極框架,也當然會為使用者想到這些痛點,它內建了強大的使用者認證系統,預設使用auth user表來儲存使用者資料 au...