質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

解決済

2回答

3138閲覧

Python・Django】django-allauthのテンプレートが上書きされない

Mr_PONPON_MARU

総合スコア35

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

1クリップ

投稿2021/02/12 10:18

編集2021/02/12 10:34

前提・実現したいこと

Djangoの認証機能としてdjango-allauthを組み込みました。
テンプレートはallauthのデフォルトテンプレートを使わずに独自テンプレートを作成ています。

allauthのデフォルトテンプレートを上書きするために独自テンプレートファイルは下記のディレクトリに格納しています。
※accountsをallauth関連のアプリケーションディレクトリとしています。

/accounts/templates/account/

しかし、「confirm-email.html」というページのみ、反映がされません。
※confirm-email.htmlはサインアップ後に遷移するページ
同一ディレクトリ内のsignup.htmlやlogin.html、password_reset.htmlなどのページはしっかり反映されます。

該当のソースコード

プロジェクトディレクトリ/accounts/templates/account/confirm-email.html

{% extends 'base.html' %} (中略) <!--メッセージの出力--> {% if messages %} {% for message in messages %} <div {% if message.tags %} class="alert {{ message.tags }} text-white fade show rounded-0" role="alert" {% endif %}> <div class="container d-flex"> <div class="alert__icon mr-3"> <i class="fas {% if message.tags == 'bg-info' %}fa-info-circle {% elif message.tags == 'bg-success' %}fa-check-circle {% elif message.tags == 'bg-warning' %}fa-exclamation-triangle {% else %}fa-minus-circle {% endif %}"></i> </div> <div class="align-self-center mr-3">{{ message }}</div> <div class="ml-auto"> <button type="button" class="alert__close alert__close--light" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> </div> </div> {% endfor %} {% endif %} <!--End メッセージの出力--> {% block contents %} <section class="u-content-space"> <div class="container"> <header class="text-center w-md-50 mx-auto mb-8"> <h2 class="h1">We send email</h2> <p>Please authenticate from the linked page</p> </header> </div> </section> {% endblock %}

プロジェクトディレクトリ/urls.py

from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('article.urls')), path('accounts/', include('allauth.urls')), ]

試したこと

下記を試しましたが、いずれのケースも反映されませんでした。色々と調べてもなぜ反映されたいのかが分からずに困っております...
どなたか、アドバイス等いただけると幸いです..!

  • ブラウザキャッシュの削除をしてからrunserverコマンドを実行し、当該ページを確認した
  • ブラウザの検証ツールを使ってスクリプトを表示させたところ、独自テンプレートの内容が反映されていなかった

 →親テンプレートは反映されていた(親と子テンプレートのblockタグ名を確認したが表記揺れは無し)

  • 当該ファイルにタイポミスがないか確認した

補足情報

認証にはemail認証を使っていて、サインアップページにemailとパスワードを入力し、signupページを押下後、confirm-email.htmlページに飛ぶと同時に、入力されたemail宛に認証ページへのリンクを送信する認証方式にしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

古い記事かつ解決済みへのコメントで大変申し訳ありません。
私も同様にallauthでの認証をやっておりましてsignup後に自動的にconfirm-emailに遷移しているがconfirm-emailがどのファイルなのかを探っておりました。
どうやらこちらはconfirm-email.htmlではなくverification_sent.htmlのファイルになっているようです。
verification_sent.htmlの内容を書き換えsignupしたところ正常に表示されました。
参考までにverification_sent.htmlのソースを張り付けておきますね。

html

1{% extends 'base.html' %} 2{% block active_singup %}active{% endblock %} 3{% block contents %} 4 5<div class="container"> 6 <div class="row"> 7 <div class="my-div-style"> 8 <h1>メールアドレスを確認してください</h1> 9 確認のメールを送信しました。<br>メールに記載されたリンクをクリックして、ユーザー登録を完了させてください。<br>数分待っても確認のメールが届かない場合はご連絡ください。 10 </div> 11 </div> 12</div> 13{% endblock %}

すでに解決済みですが何かの参考になればと思います。

投稿2021/11/07 09:52

KentarouHayashi

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

venvでdjandoをお使いであれば、下記にall-authのテンプレート名が記載されています。
テンプレート名が、comfirm-email.html ではなく、email_cofirm.html です。
ファイル名を変更して、確認してみてください。

~\venv_(プロジェクト名)\Lib\site-packages\django_allauth-0.43.0-py3.9.egg-info\SOURCES.txt

※途中のpythonのバージョン等はご自身のものと読み替えてください

 
以下は、上記SOURCE.txt内で「confirm」を含む名称を抽出したものです。
「comfirm」を名称に含む htmlファイルは唯一でした。

allauth/templates/account/email_confirm.html
allauth/templates/account/email/email_confirmation_message.txt
allauth/templates/account/email/email_confirmation_signup_message.txt
allauth/templates/account/email/email_confirmation_message.txt
allauth/templates/account/email/email_confirmation_signup_message.txt
allauth/templates/account/email/email_confirmation_signup_subject.txt
allauth/templates/account/email/email_confirmation_subject.txt
allauth/templates/account/messages/email_confirmation_sent.txt
allauth/templates/account/messages/email_confirmed.txt

投稿2021/02/13 00:25

編集2021/02/13 00:25
_whitecat_22

総合スコア1305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mr_PONPON_MARU

2021/02/18 10:44

コメントありがとうございます。 サインアップのフォーム送信後のリダイレクト先が『<ホスト名>/accounts/confirm-email/』へと自動で遷移していたため、allauthのデフォルトテンプレートにemail_confirm.htmlとは別に、confirm-emailが用意されているものだと勘違いしておりました.... ご指摘のディレクトリのSOURCE.txt内を見ると確かにemail_confirm.htmlしか見つかりませんでした email_confirm.htmlはサインアップフォーム送信後にメールのリンクから遷移してメール認証を行うためのテンプレートという認識をしております。(もし間違いであればご指摘ください..) サインアップのフォーム送信後のリダイレクト先を独自に作成するのであれば、通常通りにurls.pyにパスの記述やviewsの作成をする必要があるのでしょうか?
_whitecat_22

2021/02/18 13:39

> email_confirm.htmlはサインアップフォーム送信後にメールのリンクから遷移してメール認証を行うためのテンプレートという認識をしております。 ⇒ ご認識の通りです。 > サインアップのフォーム送信後のリダイレクト先を独自に作成するのであれば、通常通りにurls.pyにパスの記述やviewsの作成をする必要があるのでしょうか? ⇒ はい、その通りです。  views.pyでredirect先、トップページもしくはログインフォームのページにするのが良いと思います。
Mr_PONPON_MARU

2021/02/19 00:40

分かりました...! ご丁寧にありがとうございます...!
_whitecat_22

2021/02/19 00:55

いえいえ、どういたしまして!^^ お役に立てて嬉しく思います。 サイト構築、頑張ってくださいね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問