我的博客四|註冊登陸退出功能後臺開發

聲明:本博客的註冊登陸退出功能將使用django-allauth,參考資源以下:
django-allauth文檔
django-allauth教程git

一、安裝django-allauth

pip install django-allauth

安裝django-allauth

二、配置信息

安裝後設置blog/settings.py,將allauth相關APP加入到INSTALLED_APP裏去。github

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # <添加storm相關應用>
    'storm',
    # <storm--end--->
    
    # <添加allauth相關應用>
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.github',
    # <allauth--end--->
]

注意:allauth對於站點設置django.contrib.sites有依賴,你必需也把它加入進去,同時設置SITE_ID數據庫

SITE_ID不必深刻了解,目前不涉及多站點。目前能涉及到的是當出現"SocialApp matching query does not exist"這種報錯的時須要更換SITE_ID值django

三、allauth 基本設置

# 多站點框架:
# 位於django.contrib.sites的site。
# SITE_ID指定與特定配置文件相關聯的site對象之數據庫的ID。
# 當出現"SocialApp matching query does not exist",這種報錯的時候就須要更換這個ID
SITE_ID = 1
# 設置登陸和註冊成功後重定向的頁面,默認是/accounts/profile/
LOGIN_REDIRECT_URL = "/"
# Email setting
# 禁用註冊郵箱驗證
ACCOUNT_EMAIL_VERIFICATION = 'none'
# 登陸方式,選擇用戶名或者郵箱登陸
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
# 設置用戶註冊的時候必須填寫郵箱地址
ACCOUNT_EMAIL_REQUIRED = True
# 登出直接退出,不用確認
ACCOUNT_LOGOUT_ON_GET = True

四、django-allauth常見設置選項

你也能夠添加其它設置選項來實現你所想要的功能, 好比設置郵件確認過時時間,限制用戶使用錯誤密碼登陸的持續時間。session

# 指定要使用的登陸方法(用戶名、電子郵件地址或二者之一)
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")

# 郵件確認郵件的截止日期(天數)
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (=3)

# 註冊中郵件驗證方法:「強制(mandatory)」,「可選(optional)」或「否(none)」之一
ACCOUNT_EMAIL_VERIFICATION (="optional")

# 郵件發送後的冷卻時間(以秒爲單位)
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN (=180)

# 登陸嘗試失敗的次數
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (=5)

# 從上次失敗的登陸嘗試,用戶被禁止嘗試登陸的持續時間
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT (=300)

# 更改成True,用戶一旦確認他們的電子郵件地址,就會自動登陸
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION (=False)

# 更改或設置密碼後是否自動退出
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False)

# 更改成True,用戶將在重置密碼後自動登陸
ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False)

# 控制會話的生命週期,可選項還有:False,True
ACCOUNT_SESSION_REMEMBER (=None)

# 用戶註冊時是否須要輸入郵箱兩遍
ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE (=False)

# 用戶註冊時是否須要用戶輸入兩遍密碼

ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True)

# 用戶不能使用的用戶名列表
ACCOUNT_USERNAME_BLACKLIST (=[])

# 增強電子郵件地址的惟一性
ACCOUNT_UNIQUE_EMAIL (=True)

# 用戶名容許的最小長度的整數
ACCOUNT_USERNAME_MIN_LENGTH (=1)

# 使用從社會賬戶提供者檢索的字段(如用戶名、郵件)來繞過註冊表單
SOCIALACCOUNT_AUTO_SIGNUP (=True)

# 設置登陸後跳轉連接
LOGIN_REDIRECT_URL (="/") 

# 設置退出登陸後跳轉連接
ACCOUNT_LOGOUT_REDIRECT_URL (="/")

五、配置allauth路由

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    # allauth
    url(r'^accounts/', include('allauth.urls')),

    # storm
    url('', include('storm.urls', namespace='blog')),  # blog
]

六、運行效果

能夠訪問哪一個路由,取決於,blog/settings.py中allauth設置信息框架

註冊ide

http://127.0.0.1:8080/accounts/signup/

註冊

登陸url

http://127.0.0.1:8080/accounts/login/

登陸

七、django-allauth所有路由

下面是django_allauth全部內置的URLs,都可以訪問的。能夠去allauth/account/urls.py查看spa

# 登陸
/accounts/login/

# 註冊
/accounts/signup/

# 重置密碼
/accounts/password/reset/

# 退出登陸
/accounts/logout/

# 設置密碼 
/accounts/password/set/

# 改變密碼(需登陸)
/accounts/password/change/

#  用戶能夠添加和移除email,並驗證
/accounts/email/

# 管理第三方帳戶
/accounts/social/connections/

用戶詳細信息是沒有的.net

/accounts/profile/

若是我但願用戶在註冊時提供更多信息(好比公司名、電話、住址等)
若是用戶在註冊後須要修改我的信息怎麼辦?
因爲每一個開發者對用戶所需提供的額外信息需求是不同的,因此沒有提供這個視圖和URL。
所以django-allauth並無提供用戶詳情應用

用戶詳情請參考:[我的博客五|用戶我的資料Profile擴展]

相關文章
相關標籤/搜索