Django ищет шаблоны в моей папке .envs (+ Django Admin) - PullRequest
0 голосов
/ 11 мая 2018

Мои папки настроены так:

~/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']

Как я могу заставить Джанго найти мои собственные шаблоны? По ошибке могу сказать, что он смотрит в мои виртуальные среды.

Я попытался указать путь к шаблонам следующим образом:

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, потому что официальные документы рекомендуют его. Но я не смог установить переменную env DJANGO_SETTINGS_MODULE, чтобы она работала. Возможно, эта проблема связана .)

РЕДАКТИРОВАТЬ: приложение для связанных с учетной записью вещи называется учетные записи. В ней находится папка с шаблонами, в которой содержатся различные другие папки, одна из которых называется «регистрация».

1 Ответ

0 голосов
/ 14 мая 2018

Када решена.

Обошел проблему django-admin с помощью manage.py, как и предложил pydanny .

И я просто неправильно настроил свои шаблоны.Вот новое представление, которое я использовал:

class CustomPasswordResetConfirmView(views.PasswordResetConfirmView):
    success_url = reverse_lazy("accounts:password_reset_complete")
    template_name = "registration/password_reset_confirm.html"

Я также поместил папку шаблонов в корень моего проекта следующим образом:

myproject
  accounts/
  ...
  myproject/
  templates/

Папка registration/ теперь находится внутри этой templates/ directory.

Вместе со следующими настройками теперь все работает, спасибо всем, кто помог!

Настройки:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
...