聲明:本博客的註冊登陸退出功能將使用django-allauth,參考資源以下:
django-allauth文檔
django-allauth教程git
pip install 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
# 多站點框架: # 位於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
你也能夠添加其它設置選項來實現你所想要的功能, 好比設置郵件確認過時時間,限制用戶使用錯誤密碼登陸的持續時間。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 (="/")
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全部內置的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擴展]