【问题标题】:Problems with customizing django password_reset template?自定义 django password_reset 模板的问题?
【发布时间】:2019-04-19 22:24:02
【问题描述】:

我正在尝试自定义 password_reset_form.html 并呈现我自己的自定义表单以进行密码重置。但由于某种原因,它不断将我重定向到默认的 django password_reset 表单。我可能做错了什么。

root/urls.py
    url('accounts/', include('django.contrib.auth.urls')), 


accounts/urls.py
from django.conf.urls import url
from .views import *
from django.contrib.auth import views as auth_views


urlpatterns  = [
url(r'^password/change/$',
        auth_views.PasswordChangeView.as_view(),
        name='password_change'),
url(r'^password/change/done/$',
        auth_views.PasswordChangeDoneView.as_view(),
        name='password_change_done'),
url(r'^password/reset/$',
        auth_views.PasswordResetView.as_view(),
        name='password_reset'),
url(r'^password/reset/done/$',
        auth_views.PasswordResetDoneView.as_view(),
        name='password_reset_done'),
url(r'^password/reset/\
        (?P<uidb64>[0-9A-Za-z_\-]+)/\
        (?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        auth_views.PasswordResetConfirmView.as_view(),
        name='password_reset_confirm'),

url(r'^password/reset/complete/$',
        auth_views.PasswordResetCompleteView.as_view(),
        name='password_reset_complete'),
]

模板文件夹

【问题讨论】:

  • 您已经包含了默认的身份验证 URL,而不是您覆盖的 URL。
  • 看到这个Reset form可能对你有帮助

标签: python django


【解决方案1】:

我遇到了同样的问题,我通过将参数传递给视图来解决它。

from django.urls import path, reverse_lazy
from django.contrib.auth import views as auth_views
app_name = 'my_app'

urlpatterns = [

    ...

    path('password_reset/', auth_views.PasswordResetView.as_view(

        template_name='./my_app/password_reset_form.html',
        success_url=reverse_lazy('my_app:password_reset_done'),
        subject_template_name='./my_app/password_reset_subject.txt'),
     name='password_reset'),

    path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),

...
]

有关参数的完整列表,您可以查看 gitlab 参考:

https://github.com/django/django/blob/master/django/contrib/auth/views.py

我的项目结构:

  • 我的项目
    • my_app
      • 模板
        • my_app
          • password_reset_subject.txt
          • password_reset_form.html
      • apps.py
      • urls.py
      • views.py
    • 我的项目
      • 设置
      • 网址
      • wsgi

...

在 my_project/settings 中:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

这是对我有帮助的答案: Django password_reset/done page overriding my custom URL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 2011-05-02
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多