0

私はdjangoにかなり慣れていないので、現在djangoログインビューを書き直しているので、すべての認証プロセスを専用のdjangoアプリに移動して、テンプレートを再定義できます。だから現在、私はそのようなaccountsアプリを持っていurl.pyます:

from django.contrib.auth import views as auth_views
from django.urls import path
from . import views

app_name = 'accounts'
urlpatterns = [
    path('login/', auth_views.login, {'template_name': 'accounts/login.html'}, name='login'),
    path('logout/', auth_views.logout, name='logout'),
    path('password_reset/', auth_views.password_reset,
         {'template_name': 'accounts/password_reset_form.html',
          'email_template_name': 'accounts/password_reset_email.html',
          'subject_template_name': 'accounts/password_reset_subject.txt',
          'post_reset_redirect': 'done/'}, name='password_reset'),
    path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(
        template_name='accounts/password_reset_done.html'), name='password_reset_done'),

    path('reset/<uidb64>/<token>/', auth_views.password_reset_confirm,
         {'template_name': 'accounts/password_reset_confirm.html',
          'post_reset_redirect': '/accounts/reset/done/'}, name='password_reset_confirm'),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(
        template_name='accounts/password_reset_complete.html'), name='password_reset_complete')
]

そして、accounts/password_reset_email.html次のようになります。

{% autoescape off %}
To initiate the password reset process for your {{ user.get_username }} account,
click the link below:

{{ protocol }}://{{ domain }}{% url 'accounts:password_reset_confirm' uidb64=uid token=token %}?origin_page={{ request.POST.origin_page }}"

...

Sincerely,
The Team
{% endautoescape %}

私がやりたいことは、origin_page引数を回復して、ユーザーが電子メールからリセットリンクをクリックすると、パスワードがリセットされた後に正しい Web ページにリダイレクトされるようにすることです。これまでのところ、私はこれをやろうとしましたpassword_reset_form.html

{% block content %}
    <p>Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one.</p>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="hidden" name="origin_page" value="{{ request.GET.origin_page }}"/>
        <button type="submit">Submit</button>
    </form>
{% endblock %}

origin_pageここでは、から取得できるように送信フォームに my を渡したいだけです。accounts/password_reset_email.htmlこのページの URL は次のようになりますhttp://127.0.0.1:8000/accounts/password_reset/?origin_page=/mypage/

request.POST.origin_pageからパラメータを回復するにはどうすればよいaccounts/password_reset_email.htmlですか? ありがとう。

4

1 に答える 1