在 Django 的Web应用程序中添加用户认证(django-allauth)
首先
2. 首相bbcに寄せられたインタビューで述べた。
我们将在上次创建的“使用Django显示Hello World”的Web应用程序中添加用户认证。
对于Django的用户认证
Django原生支持用户认证系统。通过使用Django的多个视图,可以实现登录、注销和密码管理,但对于认证视图,没有默认模板。
因此,本次我们将使用包含模板的django-allauth来更简单地添加用户认证。
3. 安装django-allauth
用pip命令安装django-allauth插件。
pip install django-allauth
更改setting.py
在 setting.py 中添加用户认证的设置。省略了未添加或未更改的部分。
import os # 追加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'allauth', # 追加
'allauth.account', # 追加
'allauth.socialaccount', # 追加
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'DIRS': [
os.path.join(BASE_DIR, 'templates'), # 追加
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request', # 追加
],
},
},
]
LANGUAGE_CODE = 'ja' # en-usからjaに変更
# 追加
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
# 追加
SITE_ID = 1
# 追加 ログイン時のリダイレクト先
LOGIN_REDIRECT_URL = '/'
# 追加 ログアウト時のリダイレクト先
ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/'
# 追加 認証方式(メルアドとパスワード)の設定
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_USERNAME_REQUIRED = False
# 追加 ユーザ登録時に確認メールを送信しない
ACCOUNT_EMAIL_VERIFICATION = 'none'
# 追加 ユーザ登録にメルアド必須
ACCOUNT_EMAIL_REQUIRED = True
5. 创建用于确认操作的主屏幕
我們將創建一個名為templates/home.html的文件,以供動作確認的主畫面使用。
<html>
<head>
<title>home</title>
</head>
<body>
{% if user.is_authenticated %}
<p>Welcome!</p>
<p><a href="{% url 'account_logout' %}">ログアウト画面</a></p>
{% else %}
<p>Please login!</p>
<p><a href="{% url 'account_login' %}">ログイン画面</a></p>
{% endif %}
</body>
</html>
6. 更改 urls.py
将用户认证和主页设置添加到urls.py中。
from django.contrib import admin
from django.urls import path, include # include追加
from django.views.generic import TemplateView # 追加
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('allauth.urls')), # 追加
path('', TemplateView.as_view(template_name='home.html'), name='home'), # 追加
]
7. 进行迁移操作
执行迁移操作并创建用户认证相关的数据库表。
python3 manage.py migrate
在开发服务器上进行操作确认
我們將在開發伺服器上進行操作確認。
python3 manage.py runserver 0.0.0.0:8000






9. 最后
本次使用了django-allauth,向Django的Web应用程序添加了用户认证功能。由于没有进行CSS设置,界面非常简陋。未来我们还打算改进设计。