【发布时间】:2018-10-22 00:30:40
【问题描述】:
我的文件夹是这样设置的:
~/projects/myproject/
~/.envs/myproject/
我的应用文件夹如下所示:
myapp/
├── __init__.py
├── admin.py
├── forms.py
├── migrations/
├── models.py
├── tests/
├── templates/
├── urls.py
├── views.py
我刚刚实现了自定义密码重置视图,因为我想使用自己的模板。问题是,密码重置视图找不到我的模板。这是我的看法:
class CustomPasswordResetConfirmView(views.PasswordResetConfirmView):
success_url = reverse_lazy("accounts:password_reset_complete")
template_name = "accounts/registration/password_reset_confirm.html"
这是我收到的错误消息:
TemplateDoesNotExist at /auth/reset/MQ/set-password/
accounts/registration/password_reset_confirm.html.
Request Method: GET
Request URL: http://localhost:8000/auth/reset/MQ/set-password/
Django Version: 1.11.13
Exception Type: TemplateDoesNotExist
Exception Value:
accounts/registration/password_reset_confirm.html.
Exception Location: /Users/jan/.envs/myproject/lib/python3.6/site-packages/django/template/loader.py in select_template, line 53
Python Executable: /Users/jan/.envs/myproject/bin/python
Python Version: 3.6.5
Python Path:
['/Users/jan/Dev/Misc Tutorial/myproject',
'/Users/jan/.envs/myproject/lib/python36.zip',
'/Users/jan/.envs/myproject/lib/python3.6',
'/Users/jan/.envs/myproject/lib/python3.6/lib-dynload',
'/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
'/Users/jan/.envs/myproject/lib/python3.6/site-packages']
如何让 Django 找到我的自定义模板?从错误中我可以看出他在我的虚拟环境中查看。
我尝试像这样指定模板路径:
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',
],
},
},
]
我从 Django 文档中获得的代码。不幸的是,这没有帮助。如果您知道如何解决此问题,我将不胜感激!
(在相关说明中,我也尝试使用 django-admin 而不是 manage.py,因为官方文档推荐它。但我无法设置 DJANGO_SETTINGS_MODULE 环境变量使其工作。也许这个问题是相关的.)
编辑:与帐户相关的应用程序称为帐户。里面有一个叫templates的文件夹,里面放着各种其他的文件夹,一个叫'registration'。
【问题讨论】:
-
您的模板名称末尾有一个额外的
.。但是您的问题不清楚;您尝试使用的模板在哪里?您显示的唯一应用程序称为“myapp”;您有单独的帐户应用程序吗?是否有“模板/注册”目录? -
@DanielRoseman 感谢您的帮助。是的,我删除了这一点,它仍然会引发同样的错误。是的,我有一个单独的帐户应用程序。在问题中添加了上下文。您也正确的是,帐户应用程序中有一个模板/注册目录。我刚刚将示例应用程序称为 myapp。
-
来自文档:“manage.py 与 django-admin 做同样的事情,但会为您处理一些事情:1)它将您的项目包放在 sys.path 上。2)它设置DJANGO_SETTINGS_MODULE 环境变量,使其指向您项目的 settings.py 文件。”转到 manage.py,您可能会发现配置 Django 项目更容易。
-
谢谢@pydanny。那我就用manage.py吧!你知道是什么导致 Django 只在 .envs 文件夹中查找模板吗?
-
没有看到整个源代码,我无法开始诊断原因。
标签: django django-templates virtualenv django-settings django-errors