在 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
pre1.png
pre2.png
pre3.png
pre4.png
pre5.png
pre6.png

9. 最后

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

bannerAds