LoginSignup
0
0

【django-allauth ver0.56】"NameError: name 'allauth' is not defined"の対処法

Posted at

はじめに

Djangoでユーザ認証付きwebアプリの開発中に起こったエラー。

ユーザ認証機能追加のためにdjango-allauthをインストールし、settings.pyのINSTALLED_APPSに以下のように追加

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'allauth', #この行を追加
    'app', #アプリ名(今回は関係なし)
]

その後諸々の作業を進め、python manage.py runserverでローカルサーバーを起動したところ以下のエラーが。

allauth.account.middleware.AccountMiddleware
NameError: name 'allauth' is not defined

allauthが未定義とのこと。
INSTALLED_APPSには追加されているのになぜ?

動作環境

OS

・windows 10 pro

モジュール

・Django 4.1.1
・django-allauth 0.56.1

原因と解決方法

例のごとくGPT先生にエラー文を叩きつけてお聞きしたところ、今回のエラーはミドルウェアの設定不足が原因らしい。

ChatGPT:https://chat.openai.com/

正しく動作させるには、settings.pyのMIDDLEWAREに以下の記述を追加しなくてはならないとのこと。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'allauth.account.middleware.AccountMiddleware', #この行を追加
]

こんなの前まで書かなかった...となるのもそのはずで、ver0.56.0から記述が必要になったとか。改めてバージョン変更は注意して行わないとですね...

参考サイト:django-allauth公式ドキュメント

おわりに

モジュールはアプデ前に、公式ドキュメントをチェックすると自戒しておきます。
ソースコードをGitHub等に公開する際には、requirements.txtには~=等を使って明確なバージョン記載しておきましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0