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

在Django的session中使用User對(duì)象的方法

 更新時(shí)間:2015年07月23日 10:08:48   投稿:goldensun  
這篇文章主要介紹了在Django的session中使用User對(duì)象的方法,Django是眾Python web開(kāi)發(fā)框架中人氣最高的一個(gè),需要的朋友可以參考下

通過(guò)session,我們可以在多次瀏覽器請(qǐng)求中保持?jǐn)?shù)據(jù), 接下來(lái)的部分就是用session來(lái)處理用戶(hù)登錄了。 當(dāng)然,不能僅憑用戶(hù)的一面之詞,我們就相信,所以我們需要認(rèn)證。

當(dāng)然了,Django 也提供了工具來(lái)處理這樣的常見(jiàn)任務(wù)(就像其他常見(jiàn)任務(wù)一樣)。 Django 用戶(hù)認(rèn)證系統(tǒng)處理用戶(hù)帳號(hào),組,權(quán)限以及基于cookie的用戶(hù)會(huì)話(huà)。 這個(gè)系統(tǒng)一般被稱(chēng)為 auth/auth (認(rèn)證與授權(quán))系統(tǒng)。 這個(gè)系統(tǒng)的名稱(chēng)同時(shí)也表明了用戶(hù)常見(jiàn)的兩步處理。 我們需要

  •     驗(yàn)證 (認(rèn)證) 用戶(hù)是否是他所宣稱(chēng)的用戶(hù)(一般通過(guò)查詢(xún)數(shù)據(jù)庫(kù)驗(yàn)證其用戶(hù)名和密碼)
  •     驗(yàn)證用戶(hù)是否擁有執(zhí)行某種操作的 授權(quán) (通常會(huì)通過(guò)檢查一個(gè)權(quán)限表來(lái)確認(rèn))
  • 根據(jù)這些需求,Django 認(rèn)證/授權(quán) 系統(tǒng)會(huì)包含以下的部分:
  •     用戶(hù) : 在網(wǎng)站注冊(cè)的人
  •     權(quán)限 : 用于標(biāo)識(shí)用戶(hù)是否可以執(zhí)行某種操作的二進(jìn)制(yes/no)標(biāo)志
  •     組 :一種可以將標(biāo)記和權(quán)限應(yīng)用于多個(gè)用戶(hù)的常用方法
  •     Messages : 向用戶(hù)顯示隊(duì)列式的系統(tǒng)消息的常用方法

如果你已經(jīng)用了admin工具(詳見(jiàn)第6章),就會(huì)看見(jiàn)這些工具的大部分。如果你在admin工具中編輯過(guò)用戶(hù)或組,那么實(shí)際上你已經(jīng)編輯過(guò)授權(quán)系統(tǒng)的數(shù)據(jù)庫(kù)表了。
打開(kāi)認(rèn)證支持

像session工具一樣,認(rèn)證支持也是一個(gè)Django應(yīng)用,放在 django.contrib 中,所以也需要安裝。 與session系統(tǒng)相似,它也是缺省安裝的,但如果它已經(jīng)被刪除了,通過(guò)以下步驟也能重新安裝上:

  •     根據(jù)本章早前的部分確認(rèn)已經(jīng)安裝了session 框架。 需要確認(rèn)用戶(hù)使用cookie,這樣sesson 框架才能正常使用。
  •     將 'django.contrib.auth' 放在你的 INSTALLED_APPS 設(shè)置中,然后運(yùn)行 manage.py syncdb以創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。
  •     確認(rèn) SessionMiddleware 后面的 MIDDLEWARE_CLASSES 設(shè)置中包含 'django.contrib.auth.middleware.AuthenticationMiddleware' SessionMiddleware。

這樣安裝后,我們就可以在視圖(view)的函數(shù)中處理user了。 在視圖中存取users,主要用 request.user ;這個(gè)對(duì)象表示當(dāng)前已登錄的用戶(hù)。 如果用戶(hù)還沒(méi)登錄,這就是一個(gè)AnonymousUser對(duì)象(細(xì)節(jié)見(jiàn)下)。

你可以很容易地通過(guò) is_authenticated() 方法來(lái)判斷一個(gè)用戶(hù)是否已經(jīng)登錄了:

if request.user.is_authenticated():
 # Do something for authenticated users.
else:
 # Do something for anonymous users.

使用User對(duì)象

User 實(shí)例一般從 request.user ,或是其他下面即將要討論到的方法取得,它有很多屬性和方法。 AnonymousUser 對(duì)象模擬了 部分 的接口,但不是全部,在把它當(dāng)成真正的user對(duì)象 使用前,你得檢查一下 user.is_authenticated() 表14-3和14-4分別列出了`` User`` 對(duì)象中的屬性(fields)和方法。

2015723100423413.jpg (713×385)


System Message: ERROR/3 (<string>, line 735)

Error parsing content block for the “table” directive: exactly one table expected.

.. table:: 表 ``User`` 對(duì)象方法

復(fù)制代碼 代碼如下:

   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |方法                                                                                         |描述                                                                                                                                                  |
   +=============================================================================================+======================================================================================================================================================+
   |``is_authenticated()``                                                                       |對(duì)于真實(shí)的User對(duì)象,總是返回\ `` True`` 。                                                                                                            |
   |                                                                                             |這是一個(gè)分辨用戶(hù)是否已被鑒證的方法。 它并不意味著任何權(quán)限,也不檢查用戶(hù)是否仍是活動(dòng)的。 它僅說(shuō)明此用戶(hù)已被成功鑒證。                                  |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``is_anonymous()``                                                                           |對(duì)于\ `` AnonymousUser`` 對(duì)象返回\ `` True`` (對(duì)于真實(shí)的\ `` User`` 對(duì)象返回\ `` False`` )。                                                        |
   |                                                                                             |總的來(lái)說(shuō),比起這個(gè)方法,你應(yīng)該傾向于使用\ `` is_authenticated()`` 方法。                                                                              |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``get_full_name()``                                                                          |返回\ `` first_name`` 加上\ `` last_name`` ,中間插入一個(gè)空格。                                                                                       |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``set_password(passwd)``                                                                     |設(shè)定用戶(hù)密碼為指定字符串(自動(dòng)處理成哈希串)。 實(shí)際上沒(méi)有保存\ ``User``\對(duì)象。                                                                        |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |check_password(passwd)                                                                       |如果指定的字符串與用戶(hù)密碼匹配則返回\ ``True``\。 比較時(shí)會(huì)使用密碼哈希表。                                                                            |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``get_group_permissions()``                                                                  |返回一個(gè)用戶(hù)通過(guò)其所屬組獲得的權(quán)限字符串列表。                                                                                                        |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``get_all_permissions()``                                                                    |返回一個(gè)用戶(hù)通過(guò)其所屬組以及自身權(quán)限所獲得的權(quán)限字符串列表。                                                                                          |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``has_perm(perm)``                                                                           |如果用戶(hù)有指定的權(quán)限,則返回\ `` True`` ,此時(shí)\ `` perm`` 的格式是\ `` "package.codename"`` 。如果用戶(hù)已不活動(dòng),此方法總是返回\ `` False`` 。         |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |has_perms(perm_list)                                                                         |如果用戶(hù)擁有\(zhòng) * 全部* 的指定權(quán)限,則返回\ `` True`` 。 如果用戶(hù)是不活動(dòng)的,這個(gè)方法總是返回\ `` False`` 。                                            |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``has_module_perms(app_label)``                                                              |如果用戶(hù)擁有給定的\ `` app_label`` 中的任何權(quán)限,則返回\ `` True`` 。如果用戶(hù)已不活動(dòng),這個(gè)方法總是返回\ `` False`` 。                                |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |get_and_delete_messages()                                                                    |返回一個(gè)用戶(hù)隊(duì)列中的\ `` Message`` 對(duì)象列表,并從隊(duì)列中將這些消息刪除。                                                                               |
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
   |``email_user(subj, msg)``                                                                    |向用戶(hù)發(fā)送一封電子郵件。 這封電子郵件是從\ `` DEFAULT_FROM_EMAIL`` 設(shè)置的地址發(fā)送的。 你還可以傳送一個(gè)第三參數(shù):\ `` from_email`` ,以覆蓋電郵中的發(fā)送地址。|
   +---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

最后,`` User`` 對(duì)象有兩個(gè)many-to-many屬性。 `` groups`` 和`` permissions`` 。正如其他的many-to-many屬性使用的方法一樣,`` User`` 對(duì)象可以獲得它們相關(guān)的對(duì)象:

# Set a user's groups:
myuser.groups = group_list

# Add a user to some groups:
myuser.groups.add(group1, group2,...)

# Remove a user from some groups:
myuser.groups.remove(group1, group2,...)

# Remove a user from all groups:
myuser.groups.clear()

# Permissions work the same way
myuser.permissions = permission_list
myuser.permissions.add(permission1, permission2, ...)
myuser.permissions.remove(permission1, permission2, ...)
myuser.permissions.clear()

相關(guān)文章

  • 多個(gè)版本的python共存時(shí)使用pip的正確做法

    多個(gè)版本的python共存時(shí)使用pip的正確做法

    這篇文章主要介紹了多版本python共存時(shí)使用pip的正確做法,幫助有多個(gè)python版本需求的人可以正確的導(dǎo)包,感興趣的朋友可以了解下
    2020-10-10
  • Python自動(dòng)化辦公之文件整理腳本分享

    Python自動(dòng)化辦公之文件整理腳本分享

    這篇文章主要為大家分享了一個(gè)Python自動(dòng)化辦公腳本,可以實(shí)現(xiàn)文件整理,這是一個(gè)很有用的技能,可以幫助你管理你的電腦上的各種文件,需要的可以收藏一下
    2023-08-08
  • Python Flask框架實(shí)現(xiàn)簡(jiǎn)單加法工具過(guò)程解析

    Python Flask框架實(shí)現(xiàn)簡(jiǎn)單加法工具過(guò)程解析

    這篇文章主要介紹了Python Flask框架實(shí)現(xiàn)簡(jiǎn)單加法工具過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 使用jupyter?notebook保存python代碼為.py格式問(wèn)題

    使用jupyter?notebook保存python代碼為.py格式問(wèn)題

    這篇文章主要介紹了使用jupyter?notebook保存python代碼為.py格式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境

    在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境

    這篇文章主要介紹了在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境的教程,值得一提的是這里的方案用Nginx作反向代理而使用Gunicorn作wsgi服務(wù)器,需要的朋友可以參考下
    2016-06-06
  • Python中__init__方法使用的深度解析

    Python中__init__方法使用的深度解析

    在Python的面向?qū)ο缶幊蹋∣OP)體系中,__init__方法如同建造房屋時(shí)的"奠基儀式"——它定義了對(duì)象誕生時(shí)的初始狀態(tài),下面我們就來(lái)深入了解下__init__方法吧
    2025-04-04
  • 1 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器

    1 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器

    FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來(lái)搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡(jiǎn)單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能。下面小編給大家?guī)?lái)了1 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器,需要的朋友參考下
    2018-01-01
  • 一款Python工具制作的動(dòng)態(tài)條形圖(強(qiáng)烈推薦!)

    一款Python工具制作的動(dòng)態(tài)條形圖(強(qiáng)烈推薦!)

    有時(shí)為了方便看數(shù)據(jù)的變化情況,需要畫(huà)一個(gè)動(dòng)態(tài)圖來(lái)看整體的變化情況,下面這篇文章主要給大家介紹了一款Python工具制作的動(dòng)態(tài)條形圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • pycharm-professional-2020.1下載與激活的教程

    pycharm-professional-2020.1下載與激活的教程

    這篇文章主要介紹了pycharm-professional-2020.1下載與激活的教程,本文分為安裝和永久激活兩部分內(nèi)容,需要的朋友可以參考下
    2020-09-09
  • Python PyQt5-圖形界面的美化操作

    Python PyQt5-圖形界面的美化操作

    這篇文章主要介紹了Python PyQt5-圖形界面的美化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論

盘山县| 新巴尔虎右旗| 东丽区| 西林县| 山西省| 伊金霍洛旗| 祁阳县| 彰化县| 内丘县| 晋城| 江华| 义马市| 响水县| 宿松县| 宁城县| 新疆| 荆门市| 东乡县| 江陵县| 奉化市| 新河县| 陆川县| 灵石县| 广安市| 吉林市| 理塘县| 拜泉县| 韩城市| 汝州市| 丹东市| 犍为县| 满城县| 安宁市| 毕节市| 东城区| 沾化县| 渭源县| 鹤壁市| 鲁甸县| 鸡泽县| 巢湖市|