国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Django的session中使用User對象的方法

2019-11-25 17:08:38
字體:
供稿:網(wǎng)友

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

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

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

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

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

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

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

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

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

使用User對象

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

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

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

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

# 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 waymyuser.permissions = permission_listmyuser.permissions.add(permission1, permission2, ...)myuser.permissions.remove(permission1, permission2, ...)myuser.permissions.clear()

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 原平市| 五河县| 漠河县| 黑龙江省| 桂平市| 宾阳县| 北宁市| 连山| 凤城市| 从化市| 丹寨县| 堆龙德庆县| 绥阳县| 景洪市| 巫山县| 铜陵市| 阿图什市| 昌平区| 册亨县| 玉溪市| 山阴县| 镇雄县| 会昌县| 巴塘县| 宣武区| 红安县| 札达县| 石柱| 高碑店市| 孟津县| 滨州市| 手游| 崇义县| 建宁县| SHOW| 从江县| 宝兴县| 健康| 阜平县| 天长市| 寻乌县|