こんにちは。
Wagtailのサイトにdjango-allauthというパッケージを使って、ユーザ認証機能を追加しましたが、ログインページなどの見た目の整え方をご紹介しようと思います。
こちらもご覧ください。
Wagtailのサイトにユーザ認証機能を追加する ①設定編
こんにちは。 遅くなりましたが、2021年最初の記事です。今年もよろしくお願いします。 Wagtailのサイトにdjango-allauthというパッケージを使って、ユーザ認証機能を追...
目次
テンプレートの変更方法
django-allauthのgithubサイトより変更したいTemplateファイルを持ってきます。
https://github.com/pennersr/django-allauth/tree/master/allauth/templates/account
プロジェクトのtemplateフォルダの中に入れて、こちらのファイルを書き換えていけばOKです。
変更例
私はbootstrap4を使っているので、以下のように書き換えました。
login.html変更前
<form class="login" method="POST" action="{% url 'account_login' %}"> {% csrf_token %} {{ form.as_p }} {% if redirect_field_value %} <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> {% endif %} <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a> <button class="primaryAction" type="submit">{% trans "Sign In" %}</button> </form>
ちょっと味気ないログイン画面ですね。
login.html変更後
<div class="container"> <div class="col-md-6 mt-md-2 mt-0 mx-auto"> <form class="login" method="POST" action="{% url 'account_login' %}"> {% csrf_token %} {% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} {% for field in form.visible_fields %} <div class="form-group"> <label for="{{ field.id_for_label }}">{{ field.label }}</label> {% render_field field|add_class:"form-control" placeholder=field.label%} {% for error in field.errors %} <span class="help-block">{{ error }}</span> {% endfor %} </div> {% endfor %} {% if redirect_field_value %} <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> {% endif %} <div class="form-group"> <button class="primaryAction btn btn-primary" type="submit">{% trans "Sign In" %}</button> </div> <div class="form-group"> <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a> </div> </form> </div> </div>
こんな感じで整います。
テンプレートのオーバーライド方法
基本的には、htmlファイルを書き換えるだけでOKなのですが、以下パスワード変更画面の後の「パスワードを変更しました」的なhtmlがありません。(なんでですかね??)
なので、パスワードを忘れた時にリセットした後に呼び出される「password_reset_done.html」を呼び出すようにします。
適切なフォルダにviews.pyを作成します。
from allauth.account.views import PasswordChangeView class CustomPasswordChangeView(PasswordChangeView): success_url = '/password/reset/key/done'
urls.pyのurlpatternsに追加(色付き部分)します。
from auth.views import CustomPasswordChangeView urlpatterns = [ ... path('password/change/', CustomPasswordChangeView.as_view(), name='account_password_change'), path('', include('allauth.urls')), ... ]
これでパスワード変更時に「password_reset_done.html」が呼び出されるようになりました。
コメント