安装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,需要我们自己写。

Last modification:January 5th, 2021 at 09:38 pm