Django: производственное приложение на Heroku не может найти шаблоны с URL-адресом path - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть производственная база на Heroku.

Приложение может найти шаблоны, определенные с url в urlpatterns файла urls.py.

Как: url(r'^contactreport/$', views.ContactosView, name="contactos"),

Но не те, которые определеныс path.

Как: path('inventario/', views.InventarioView, name="inventario"),

Настройки

Это моя статическая конфигурация папки в settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

Это мое промежуточное ПО (но я думаю, что это не проблема).

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Ошибка, которую я получаю

Когда я пробую ссылкина эти страницы я получаю:

TemplateDoesNotExist

django.template.loaders.filesystem.Loader: /app/templates/catalog/tareas.html (источник не существует)

HTML-шаблон существует.

Полный возврат

Среда:

Метод запроса: GET URL запроса: https://afternoon -wildwood-39943.herokuapp.com / catalog / tareas /

Версия Django: 2.1.3 Версия Python: 3.7.0 Установленные приложения: ['django.contrib.admin ',' django.contrib.auth ',' django.contrib.contenttypes ', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'catalog.apps.CatalogConfig', 'rest_framework', 'django.urls', 'django.contrib.humanize', 'catalog.templatetags'] Установленное промежуточное программное обеспечение: ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'djangdle.mCid.com), 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickidmeOwareware.clickjackO* После загрузки шаблонного загрузчика Django попытался загрузить эти шаблоны в следующем порядке:

Используя движок django: * django.template.loaders.filesystem.Loader: /app/templates/catalog/tareas.html (Источник не существует) * django.template.loaders.app_directories.Loader: /app/.heroku/python/lib/python3.7/site-packages/django/contrib/admin/templates/catalog / tareas.html (источник не существует) * django.template.loaders.app_directories.Loader: /app/.heroku/python/lib/python3.7/site-packages/django/contrib/auth/templates/catalog/tareas.html (Источник не существует) * django.template.loaders.app_directories.Loader: /app/catalog/templates/catalog/tareas.html (Источник не существует) * django.template.loaders.app_directories.Loader: /app / .heroku / python / lib / python3.7 / site-packages / rest_framework / templates / catalog / tareas.html (источник не существует)

трассировка:

файл "/ app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/exception.py "во внутреннем 34. response = get_response (запрос)

файл" /app/.heroku/python / lib / python3.7 / site-packages / django / core / handlers / base.py "в _get_response 126. response = self.process_exception_by_middleware (e, request)

File" /app/.heroku/python / lib / python3.7 / site-packages / django / core / handlers / base.py "в _get_response 124. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/auth/decorators.py" в _wrapped_view 21. вернуть view_func (запрос, * args, ** kwargs)

Файл "/app/catalog/views.py" в TareasView 630. 'mis_tareas_atrasadas': mis_tareas_atrasadas,

Файл "/app/.heroku/python/lib/python3.7/site-packages/django/shortcuts.py "в рендере 36. content = loader.render_to_string (имя-шаблона, контекст, запрос, использование = использование)

файл" /app/.heroku/python/lib/python3.7/site-packages/django/template/loader.py "в render_to_string61. template = get_template (template_name, using = using)

Файл "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader.py" в get_template 19.поднять TemplateDoesNotExist (template_name, chain = chain)

Тип исключения: TemplateDoesNotExist в / catalog / tareas / Значение исключения: catalog / tareas.html

Одно из представлений, котороедает проблемы

@login_required
def TareasView(request):
    tareas_filter_form = TareasFilterForm(request.POST)
    tareas_form = FormularioTareas(request.POST)
    tareas = Tareas.objects.all()
    tareas = tareas.order_by("-fecha_creacion")
    mis_tareas_por_hacer = tareas.filter(resuelto=False).count()

    desde = date.today() - timedelta(days=365)
    hasta = date.today() - timedelta(days=1)
    mis_tareas_atrasadas = tareas.filter(fecha_limite__range=[desde, hasta]).count()

    if request.method == "POST" and 'filtrar_tareas' in request.POST:
        tareas_filter_form = TareasFilterForm(request.POST)
        if tareas_filter_form.is_valid():
            estatus_resuelto = tareas_filter_form.cleaned_data["estatus_resuelto"]
            destinatario = tareas_filter_form.cleaned_data["destinatario"]
            busca_titulo = tareas_filter_form.cleaned_data["busca_titulo"]
            if destinatario:
                tareas = tareas.filter(destinatario=destinatario)

            if estatus_resuelto != "Todas":
                tareas = tareas.filter(resuelto=estatus_resuelto)

            tareas = tareas.filter(titulo__icontains=busca_titulo)

    return render(request, 'catalog/tareas.html', {
        'tareas_form': tareas_form,
        'tareas_filter_form': tareas_filter_form,
        'tareas': tareas,
        'mis_tareas_por_hacer': mis_tareas_por_hacer,
        'mis_tareas_atrasadas': mis_tareas_atrasadas,

    })

Любые подсказки приветствуются.Заранее спасибо!

1 Ответ

1 голос
/ 03 апреля 2019

Ваше представление пытается отобразить 'catalog/tareas.html'

return render(request, 'catalog/tareas.html', {...})

Но ваш шаблон имеет имя catalog/Tareas.html.

Если вы разрабатываете без учета регистра файловую систему, вы выигралиВ разработке нет никаких ошибок.

Однако в производственной среде Heroku работает в файловой системе, чувствительной к регистру, поэтому шаблон не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...