You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django配置自定义密码重置模板后仍加载默认,该如何处理?

解决自定义密码重置模板不加载的问题

嘿,我来帮你排查下这个问题,看起来主要是几个小细节没对齐:

首先最直观的问题是URL路由路径不匹配:你配置的路由是^reset-password/$,但实际访问的是/password_reset/,这俩路径完全不一样!Django找不到你定义的自定义路由,就会 fallback 到默认auth模块里的password_reset路由,自然加载的是系统默认模板。

接下来一步步修正:

1. 修正URL路由的路径匹配

把你urls.py里的路由路径改成和访问路径一致:

from django.contrib.auth import views as auth_views

urlpatterns += [
    # 将路径从 ^reset-password/$ 改为 ^password_reset/$
    url("^password_reset/$", auth_views.password_reset, 
        {"template_name": "pages/password_reset_form.html"}, 
        name="reset_pw"
    ),
]

如果你用的是Django 2.0及以上版本,更推荐用简洁的path语法(替代旧的正则url):

from django.contrib.auth.views import PasswordResetView

urlpatterns += [
    path('password_reset/', PasswordResetView.as_view(
        template_name='pages/password_reset_form.html'
    ), name='reset_pw'),
]

2. 确认模板目录被Django识别

你的模板放在theme/templates/pages/password_reset_form.html,要确保Django能找到这个目录。打开项目根目录的settings.py,检查TEMPLATES配置里的DIRS是否包含theme/templates:

import os

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 把theme/templates目录加入到DIRS列表中
        'DIRS': [os.path.join(BASE_DIR, 'theme', 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            # 其他配置项...
        },
    },
]

如果theme是你已经在INSTALLED_APPS里注册的应用,APP_DIRS: True会自动识别应用下的templates目录;但如果theme不是注册应用,就必须手动把它的templates目录加到DIRS里。

3. 强制刷新浏览器缓存(可选但建议)

有时候浏览器会缓存旧的模板内容,修改配置后可以用Ctrl+F5强制刷新页面,确保加载的是最新的自定义模板。

做完这些步骤,再访问http://127.0.0.1:8000/password_reset/,应该就能正常加载你的自定义密码重置模板了!

内容的提问来源于stack exchange,提问作者Username

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:25:40