Django 用戶認證系統:基本設置

本教程爲系列教程,爲方便閱讀,每篇教程開頭列出所有教程的目錄索引:python


網站提供登陸、註冊等用戶認證功能是一個常見的需求。所以,Django 提供了一套功能完整的、靈活的、易於拓展的用戶認證系統:django.contrib.auth。在本教程中,我將向你展現 auth 模塊的基本用法,例如如何提供用戶註冊、登陸、修改密碼、找回密碼等功能;如何拓展 auth 內置的 User 模型;如何自定義用戶驗證後臺,以支持用戶使用諸如郵箱手機號等用戶名登陸(默認只支持使用用戶名登陸)等等。git

開啓一個新的 Django 工程

推薦新建一個 Django 工程來做爲演示或者做爲練習,以避免把已有的項目搞亂了。本教程的演示項目基於最新版 Django 1.11.1 和 Python 3.5,不過對於其它的 Django 和 Python 一樣適用。首先在 Python 環境下安裝 Django(推薦使用虛擬環境,如何使用虛擬環境能夠參考 搭建 Django 開發環境。接下來使用 Django 提供的命令創建一個新的工程,我把它命名爲 django_auth_example。github

$ django-admin startproject django_auth_example複製代碼

工程建好了,目錄結構以下:django

django_auth_example/
    manage.py
    django_auth_example/
        __init__.py
        settings.py
        urls.py
        wsgi.py複製代碼

必要的配置

Django 在新建工程時已經爲使用用戶認證系統作好了所有必要的配置。不過有可能你並不是使用 django-admin 命令新建的工程,或者你使用的是一個正在開發中的項目,所以最好再檢查一下 settings.py 文件中是否已經作好了所有必要配置。bash

首先檢查一下必要的應用是否已經在 INSTALLED_APPS 配置裏列出:session

django_auth_example/settings.py

INSTALLED_APPS = [
    # 其它應用列表...
    'django.contrib.auth',
    'django.contrib.contenttypes',
]複製代碼

爲了使用用戶認證系統,必須安裝如下兩個應用:app

  • django.contrib.auth
  • django.contrib.contenttypes

django.contrib.contenttypes 是 auth 模塊的用戶權限處理部分依賴的應用。post

其次須要在中間件 MIDDLEWARE 配置裏列出如下兩個中間件:網站

  • SessionMiddleware 用戶處理用戶會話。
  • AuthenticationMiddleware 綁定一個 User 對象到請求中(具體將在後面介紹)。

即像下面這樣的配置:url

django_auth_example/settings.py

MIDDLEWARE = [
    # 其它中間列表...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
]複製代碼

若是以上配置沒問題的話就能夠正常地使用用戶認證系統了。

新建一個應用

即使是目前只使用 Django 用戶認證系統的默認特性,推薦的作法也是新建一個應用,用於存放和用戶功能相關的代碼,爲未來可能的功能拓展作準備。所以讓咱們來新建一個應用,我習慣上把應用命名爲 users。

$ python manage.py startapp users複製代碼

新建的應用必定要記得在 settings.py 裏註冊,不然 Django 沒法得知你新建了應用。

django_auth_example/settings.py

INSTALLED_APPS = [
    # 其它應用列表...
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'users', # 註冊新建的應用 users
]複製代碼

OK,項目的基本準備工做到這裏就結束了,接下來讓咱們開始使用 Django 用戶系統爲咱們提供的功能吧!

總結

本教程的示例項目代碼位於 GitHub:Django Auth Example

若是遇到問題,請經過下面的方式尋求幫助。

更多 Django 相關教程,請訪問個人我的博客:追夢人物的博客

相關文章
相關標籤/搜索