最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn)

 更新時(shí)間:2015年07月23日 10:22:00   投稿:goldensun  
這篇文章主要介紹了詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn),Django是重多Python人氣框架中最為知名的一個(gè),需要的朋友可以參考下


Django 提供內(nèi)置的視圖(view)函數(shù)用于處理登錄和退出 (以及其他奇技淫巧),但在開始前,我們來看看如何手工登錄和退出。 Django提供兩個(gè)函數(shù)來執(zhí)行django.contrib.auth\中的動作 : authenticate()和login()。

認(rèn)證給出的用戶名和密碼,使用 authenticate() 函數(shù)。它接受兩個(gè)參數(shù),用戶名 username 和 密碼 password ,并在密碼對給出的用戶名合法的情況下返回一個(gè) 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() 只是驗(yàn)證一個(gè)用戶的證書而已。 而要登錄一個(gè)用戶,使用 login() 。該函數(shù)接受一個(gè) HttpRequest 對象和一個(gè) User 對象作為參數(shù)并使用Django的會話( session )框架把用戶的ID保存在該會話中。

下面的例子演示了如何在一個(gè)視圖中同時(shí)使用 authenticate() 和 login() 函數(shù):

from django.contrib import auth

def login_view(request):
  username = request.POST.get('username', '')
  password = request.POST.get('password', '')
  user = auth.authenticate(username=username, password=password)
  if user is not None and user.is_active:
    # Correct password, and the user is marked "active"
    auth.login(request, user)
    # Redirect to a success page.
    return HttpResponseRedirect("/account/loggedin/")
  else:
    # Show an error page
    return HttpResponseRedirect("/account/invalid/")

注銷一個(gè)用戶,在你的視圖中使用 django.contrib.auth.logout() 。 它接受一個(gè)HttpRequest對象并且沒有返回值。

from django.contrib import auth

def logout_view(request):
  auth.logout(request)
  # Redirect to a success page.
  return HttpResponseRedirect("/account/loggedout/")

注意,即使用戶沒有登錄, logout() 也不會拋出任何異常。

在實(shí)際中,你一般不需要自己寫登錄/登出的函數(shù);認(rèn)證系統(tǒng)提供了一系例視圖用來處理登錄和登出。 使用認(rèn)證視圖的第一步是把它們寫在你的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提供的視圖的默認(rèn)URL。

缺省情況下, login 視圖渲染 registragiton/login.html 模板(可以通過視圖的額外參數(shù) template_name 修改這個(gè)模板名稱)。 這個(gè)表單必須包含 username 和 password 域。如下示例: 一個(gè)簡單的 template 看起來是這樣的

{% extends "base.html" %}

{% block content %}

 {% if form.errors %}
  <p class="error">Sorry, that's not a valid username or password</p>
 {% endif %}

 <form action="" method="post">
  <label for="username">User name:</label>
  <input type="text" name="username" value="" id="username">
  <label for="password">Password:</label>
  <input type="password" name="password" value="" id="password">

  <input type="submit" value="login" />
  <input type="hidden" name="next" value="{{ next|escape }}" />
 </form>

{% endblock %}

如果用戶登錄成功,缺省會重定向到 /accounts/profile 。 你可以提供一個(gè)保存登錄后重定向URL的next隱藏域來重載它的行為。 也可以把值以GET參數(shù)的形式發(fā)送給視圖函數(shù),它會以變量next的形式保存在上下文中,這樣你就可以把它用在隱藏域上了。

logout視圖有一些不同。 默認(rèn)情況下它渲染 registration/logged_out.html 模板(這個(gè)視圖一般包含你已經(jīng)成功退出的信息)。 視圖中還可以包含一個(gè)參數(shù) next_page 用于退出后重定向。


相關(guān)文章

  • TensorFlow的權(quán)值更新方法

    TensorFlow的權(quán)值更新方法

    今天小編就為大家分享一篇TensorFlow的權(quán)值更新方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python裝飾器模式定義與用法分析

    Python裝飾器模式定義與用法分析

    這篇文章主要介紹了Python裝飾器模式定義與用法,結(jié)合實(shí)例形式分析了Python裝飾器模式的具體定義、使用方法及相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python?GUI實(shí)現(xiàn)PDF轉(zhuǎn)Word功能

    Python?GUI實(shí)現(xiàn)PDF轉(zhuǎn)Word功能

    這篇文章主要介紹了如何使用?wxPython?創(chuàng)建一個(gè)簡單的圖形用戶界面(GUI)應(yīng)用程序,結(jié)合?pdf2docx?庫,實(shí)現(xiàn)將?PDF?轉(zhuǎn)換為?Word?文檔的功能,需要的可以參考下
    2024-12-12
  • Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例

    Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例

    這篇文章主要介紹了Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例,責(zé)任鏈模式與迭代器模式都可以被看作為行為型的設(shè)計(jì)模式,需要的朋友可以參考下
    2016-03-03
  • 詳解python的數(shù)字類型變量與其方法

    詳解python的數(shù)字類型變量與其方法

    大家都知道數(shù)字?jǐn)?shù)據(jù)類型存儲數(shù)值,它們是不可變的數(shù)據(jù)類型,這意味著改變數(shù)據(jù)類型的結(jié)果值,需要一個(gè)新分配的對象。這篇文章給大家詳細(xì)介紹了python的數(shù)字類型變量以及其方法,文中介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒。
    2016-11-11
  • python中的urlparse()方法使用

    python中的urlparse()方法使用

    這篇文章主要介紹了python中的urlparse()方法使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python lxml解析HTML并用xpath獲取元素的方法

    Python lxml解析HTML并用xpath獲取元素的方法

    今天小編就為大家分享一篇Python lxml解析HTML并用xpath獲取元素的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解python ThreadPoolExecutor異常捕獲

    詳解python ThreadPoolExecutor異常捕獲

    本文主要介紹了詳解python ThreadPoolExecutor異常捕獲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python多線程獲取返回值代碼實(shí)例

    Python多線程獲取返回值代碼實(shí)例

    這篇文章主要介紹了Python多線程獲取返回值代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python基礎(chǔ)之包的導(dǎo)入和__init__.py的介紹

    python基礎(chǔ)之包的導(dǎo)入和__init__.py的介紹

    這篇文章主要介紹了python基礎(chǔ)之包的導(dǎo)入和__init__.py的相關(guān)資料,需要的朋友可以參考下
    2018-01-01

最新評論

苍溪县| 延庆县| 靖西县| 体育| 红安县| 阿城市| 卢龙县| 海伦市| 五家渠市| 广水市| 伊通| 南和县| 黄平县| 花莲市| 吉安市| 罗定市| 龙南县| 呼和浩特市| 海安县| 峡江县| 康马县| 延庆县| 宝鸡市| 天长市| 沅江市| 阿荣旗| 宁武县| 湖北省| 罗源县| 闸北区| 岳池县| 夹江县| 南投市| 灵石县| 南宫市| 洛南县| 宕昌县| 梁山县| 乌审旗| 华池县| 买车|