聲明:本博客的註冊登錄退出功能將使用django-allauth,參考資源如下:
django-allauth文檔
django-allauth教程
1、安裝django-allauth
pip install django-allauth
2、配置信息
安裝後設置blog/settings.py,將allauth相關APP加入到INSTALLED_APP裏去。
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值
3、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
4、django-allauth常見設置選項
你也可以添加其它設置選項來實現你所想要的功能, 比如設置郵件確認過期時間,限制用户使用錯誤密碼登錄的持續時間。
# 指定要使用的登錄方法(用户名、電子郵件地址或兩者之一)
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 (="/")
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、運行效果
可以訪問哪個路由,取決於,blog/settings.py中allauth設置信息
註冊
http://127.0.0.1:8080/accounts/signup/
登錄
http://127.0.0.1:8080/accounts/login/
7、django-allauth全部路由
下面是django_allauth所有內置的URLs,均可以訪問的。可以去allauth/account/urls.py查看
# 登錄
/accounts/login/
# 註冊
/accounts/signup/
# 重置密碼
/accounts/password/reset/
# 退出登錄
/accounts/logout/
# 設置密碼
/accounts/password/set/
# 改變密碼(需登錄)
/accounts/password/change/
# 用户可以添加和移除email,並驗證
/accounts/email/
# 管理第三方賬户
/accounts/social/connections/
用户詳細信息是沒有的
/accounts/profile/
如果我希望用户在註冊時提供更多信息(比如公司名、電話、住址等)
如果用户在註冊後需要修改個人信息怎麼辦?
由於每個開發者對用户所需提供的額外信息需求是不一樣的,所以沒有提供這個視圖和URL。
因此django-allauth並沒有提供用户詳情應用
用户詳情請參考:
[個人博客五|用户個人資料Profile擴展]