概要
- Django-allauthでテンプレートを上書きするには、
account/login.html
のように、account
配下にテンプレートを作成します。- プロジェクトフォルダ内で管理できるので、
venv/lib/python3.6/site-packages/allauth/account/templates
にあるファイルを書き換えずにすみ、Gitなどでバージョン管理する際に楽です。
- プロジェクトフォルダ内で管理できるので、
- 環境は、Python 3.6.9 + Django 3.1.1 + django-allauth 0.32.0 で確認しました。
内容
- 例えばログイン画面の
account_login
というURLは、account/login.html
というテンプレートに対応しています。 - この名前でテンプレートを作成すれば、デフォルトのテンプレートを上書きすることができます。
具体例
-
settings.py
ファイルのTEMPLATES
のDIRS
で、テンプレートディレクトリを指定します- 例:manage.pyと同じ階層に
templates
というフォルダを作ってそこに入れる場合
- 例:manage.pyと同じ階層に
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'), # この行を追加
],
(略)
}
]
- 上記のtemplatesフォルダ内に、
account/login.html
を作成します
$ mkdir -p templates/account/
$ echo "<h1>this is login template...</h1>" > templates/account/login.html
-
ブラウザで確認します
-
上記以外の画面では、デフォルトのテンプレートのままなことを確認します
「account」という名前は固定
- 「account」という名前は固定です。
- INSTALLED_APPS にも
'allauth.account',
を追加していますし、 -
python3 manage.py showmigrations
すると、account
というテーブルへのマイグレーションができているのがわかります。- 公式サイトのViewsでは、
accounts
とaccount
が混在しているのが気になります。。。(後でPR出しておきます)
- 公式サイトのViewsでは、
- INSTALLED_APPS にも