安装django-allauth与基本使用
pip install django-allauth
安装完成后在settings.py
中将allauth相关的app注册到INSTALLED_APP里面去,值得注意的是allauth对于站点设置django.contrib.sites有依赖,所以也需要将它注册进去,同时设置SITE_ID。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# all_auth对site有依赖,需要导入
'django.contrib.sites',
# 导入allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
]
# 别忘了注册SITE_ID
SITE_ID = 1
这里我不需要使用allauth的第三方登录功能,所以没有把第三方登录的相关包导进来,allauth提供了强大的第三方登录功能,需要的可以查看allauth的官方文档。
再配置登录和权限控制的功能,同样写在settings.py
里面。
# 基本设定
# 可以使用用户名或邮箱登录
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
# 是否需要邮箱
ACCOUNT_EMAIL_REQUIRED = True
# 指定授权
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
别忘了在urls.py
中加上allauth
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
# 注册allauth
path('accounts/', include('allauth.urls')),
]
然后使用命令行中输入
python manage.py makemigrations
python manage.yy migrate
python manage.py runserver
在浏览器中访问http://127.0.0.1:8000/accounts/signup/
可以发现进入了注册界面,尝试注册一个账号,并且尝试登录,可以发现成功url能够成功跳转到http://127.0.0.1:8000/accounts/profile/
,但是由于我们还没有定义profile界面,所以会提示Page not found,这是正常的。
下面是django_allauth所有内置的URLs,均可以访问的。
/accounts/login/(URL名account_login): 登录
/accounts/signup/ (URL名account_signup): 注册
/accounts/password/reset/(URL名: account_reset_password) :重置密码
/accounts/logout/ (URL名account_logout): 退出登录
/accounts/password/set/ (URL名:account_set_password): 设置密码
/accounts/password/change/ (URL名: account_change_password): 改变密码(需登录)
/accounts/email/(URL名: account_email) 用户可以添加和移除email,并验证
/accounts/social/connections/(URL名:socialaccount_connections): 管理第三方账户
有没有注意到没有/accounts/profile/这个URL?因为每个开发者对用户所需提供的额外信息需求都不是一样的,所以django-allauth没有提供这个视图和URL,需要我们自己写。
1 条评论
想想你的文章写的特别好www.jiwenlaw.com