聲明:本博客的注冊(cè)登錄退出功能將使用django-allauth芭挽,參考資源如下:
django-allauth文檔
django-allauth教程
1、安裝django-allauth
pip install django-allauth
2师骗、配置信息
安裝后設(shè)置blog/settings.py邪乍,將allauth相關(guān)APP加入到INSTALLED_APP里去定庵。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# <添加storm相關(guān)應(yīng)用>
'storm',
# <storm--end--->
# <添加allauth相關(guān)應(yīng)用>
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.github',
# <allauth--end--->
]
注意:allauth對(duì)于站點(diǎn)設(shè)置django.contrib.sites有依賴议谷,你必需也把它加入進(jìn)去,同時(shí)設(shè)置SITE_ID
SITE_ID沒必要深入了解憋活,目前不涉及多站點(diǎn)岂津。目前能涉及到的是當(dāng)出現(xiàn)"SocialApp matching query does not exist"這種報(bào)錯(cuò)的時(shí)需要更換SITE_ID值
3、allauth 基本設(shè)置
# 多站點(diǎn)框架:
# 位于django.contrib.sites的site悦即。
# SITE_ID指定與特定配置文件相關(guān)聯(lián)的site對(duì)象之?dāng)?shù)據(jù)庫(kù)的ID吮成。
# 當(dāng)出現(xiàn)"SocialApp matching query does not exist",這種報(bào)錯(cuò)的時(shí)候就需要更換這個(gè)ID
SITE_ID = 1
# 設(shè)置登錄和注冊(cè)成功后重定向的頁(yè)面辜梳,默認(rèn)是/accounts/profile/
LOGIN_REDIRECT_URL = "/"
# Email setting
# 禁用注冊(cè)郵箱驗(yàn)證
ACCOUNT_EMAIL_VERIFICATION = 'none'
# 登錄方式粱甫,選擇用戶名或者郵箱登錄
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
# 設(shè)置用戶注冊(cè)的時(shí)候必須填寫郵箱地址
ACCOUNT_EMAIL_REQUIRED = True
# 登出直接退出,不用確認(rèn)
ACCOUNT_LOGOUT_ON_GET = True
4作瞄、django-allauth常見設(shè)置選項(xiàng)
你也可以添加其它設(shè)置選項(xiàng)來(lái)實(shí)現(xiàn)你所想要的功能茶宵, 比如設(shè)置郵件確認(rèn)過期時(shí)間,限制用戶使用錯(cuò)誤密碼登錄的持續(xù)時(shí)間宗挥。
# 指定要使用的登錄方法(用戶名乌庶、電子郵件地址或兩者之一)
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")
# 郵件確認(rèn)郵件的截止日期(天數(shù))
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (=3)
# 注冊(cè)中郵件驗(yàn)證方法:“強(qiáng)制(mandatory)”,“可選(optional)”或“否(none)”之一
ACCOUNT_EMAIL_VERIFICATION (="optional")
# 郵件發(fā)送后的冷卻時(shí)間(以秒為單位)
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN (=180)
# 登錄嘗試失敗的次數(shù)
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (=5)
# 從上次失敗的登錄嘗試,用戶被禁止嘗試登錄的持續(xù)時(shí)間
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT (=300)
# 更改為True契耿,用戶一旦確認(rèn)他們的電子郵件地址安拟,就會(huì)自動(dòng)登錄
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION (=False)
# 更改或設(shè)置密碼后是否自動(dòng)退出
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False)
# 更改為True,用戶將在重置密碼后自動(dòng)登錄
ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False)
# 控制會(huì)話的生命周期宵喂,可選項(xiàng)還有:False,True
ACCOUNT_SESSION_REMEMBER (=None)
# 用戶注冊(cè)時(shí)是否需要輸入郵箱兩遍
ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE (=False)
# 用戶注冊(cè)時(shí)是否需要用戶輸入兩遍密碼
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True)
# 用戶不能使用的用戶名列表
ACCOUNT_USERNAME_BLACKLIST (=[])
# 加強(qiáng)電子郵件地址的唯一性
ACCOUNT_UNIQUE_EMAIL (=True)
# 用戶名允許的最小長(zhǎng)度的整數(shù)
ACCOUNT_USERNAME_MIN_LENGTH (=1)
# 使用從社會(huì)帳戶提供者檢索的字段(如用戶名糠赦、郵件)來(lái)繞過注冊(cè)表單
SOCIALACCOUNT_AUTO_SIGNUP (=True)
# 設(shè)置登錄后跳轉(zhuǎn)鏈接
LOGIN_REDIRECT_URL (="/")
# 設(shè)置退出登錄后跳轉(zhuǎn)鏈接
ACCOUNT_LOGOUT_REDIRECT_URL (="/")
5、配置allauth路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
# allauth
url(r'^accounts/', include('allauth.urls')),
# storm
url('', include('storm.urls', namespace='blog')), # blog
]
6锅棕、運(yùn)行效果
可以訪問哪個(gè)路由拙泽,取決于,blog/settings.py中allauth設(shè)置信息
注冊(cè)
登錄
7裸燎、django-allauth全部路由
下面是django_allauth所有內(nèi)置的URLs顾瞻,均可以訪問的〉侣蹋可以去allauth/account/urls.py查看
# 登錄
/accounts/login/
# 注冊(cè)
/accounts/signup/
# 重置密碼
/accounts/password/reset/
# 退出登錄
/accounts/logout/
# 設(shè)置密碼
/accounts/password/set/
# 改變密碼(需登錄)
/accounts/password/change/
# 用戶可以添加和移除email荷荤,并驗(yàn)證
/accounts/email/
# 管理第三方賬戶
/accounts/social/connections/
用戶詳細(xì)信息是沒有的
/accounts/profile/
如果我希望用戶在注冊(cè)時(shí)提供更多信息(比如公司名、電話移稳、住址等)
如果用戶在注冊(cè)后需要修改個(gè)人信息怎么辦蕴纳?
由于每個(gè)開發(fā)者對(duì)用戶所需提供的額外信息需求是不一樣的,所以沒有提供這個(gè)視圖和URL个粱。
因此django-allauth并沒有提供用戶詳情應(yīng)用
用戶詳情請(qǐng)參考:
[個(gè)人博客五|用戶個(gè)人資料Profile擴(kuò)展]