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

Django无法找到自定义密码重置模板问题求助

解决Django自定义密码重置视图模板找不到问题及环境变量配置

先帮你梳理下问题:你在自定义密码重置确认视图时遇到了模板找不到的错误,尝试配置TEMPLATES后没解决,同时用django-admin命令时也遇到了环境变量的问题。下面一步步来解决:

1. 修复TEMPLATES配置的低级错误

看你贴的TEMPLATES配置,DIRS里写了[os.path.join(BASE_DIR, 'templates')]——这是嵌套列表了!Django要求DIRS是字符串路径的列表,你这里把单个路径又套了一层列表,会导致Django无法正确解析项目根目录的templates文件夹(如果有的话)。正确的配置应该是:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 去掉内层的[]
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2. 确认模板路径是否匹配

你的账号应用名叫accounts,视图里指定的模板路径是accounts/registration/password_reset_confirm.html,那模板文件的位置必须对应:

accounts/
├── templates/
│   └── accounts/  # 必须多这一层,对应应用名
│       └── registration/
│           └── password_reset_confirm.html

因为当APP_DIRS=True时,Django会自动去每个已安装应用的templates目录下查找应用名/xxx.html格式的模板。如果你的模板现在是放在accounts/templates/registration/下,那你需要把视图里的template_name改成registration/password_reset_confirm.html,或者给registration文件夹套一层accounts目录,二选一都可以。

3. 别忘了把accounts加入INSTALLED_APPS

检查你的settings.py里的INSTALLED_APPS列表,必须包含'accounts',否则Django不会去这个应用的templates目录里找模板。

4. 解决django-admin的环境变量问题

用django-admin命令时,必须指定项目的settings模块,你可以这样做:

  • Mac/Linux终端:
    临时设置环境变量再执行命令:
    export DJANGO_SETTINGS_MODULE=myproject.settings
    django-admin <你的命令>
    
    或者一次性执行:
    DJANGO_SETTINGS_MODULE=myproject.settings django-admin <你的命令>
    
  • Windows(PowerShell):
    $env:DJANGO_SETTINGS_MODULE="myproject.settings"
    django-admin <你的命令>
    
    另外更简单的方法是用python -m django代替django-admin,它会自动识别当前目录下的manage.py对应的settings:
    python -m django <你的命令>
    

最后验证

做完上面的调整后,重启Django开发服务器,再访问密码重置链接试试,应该就能找到模板了。

内容的提问来源于stack exchange,提问作者J. Hesters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:09