博客 / 詳情

返回

個人博客四|註冊登錄退出功能後台開發

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

1、安裝django-allauth

pip install django-allauth

安裝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擴展]

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.