我的生产基地在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', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
模板加载器事后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(request)
文件 “ /app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py” 在_get_response中 126. response = self.process_exception_by_middleware(e,request)
文件 “ /app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py” 在_get_response中 124. response = wrapd_callback(request,* callback_args,** callback_kwargs)
文件 “ /app/.heroku/python/lib/python3.7/site-packages/django/contrib/auth/decorators.py” 在_wrapped_view中 21. return view_func(request,* args,** kwargs)
TareasView中的文件“ /app/catalog/views.py” 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_string 61. 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)
异常类型:/ catalog / tareas /处的TemplateDoesNotExist 值: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,
})
欢迎提供任何线索。预先感谢!
答案 0 :(得分:1)
您的视图正在尝试呈现'catalog/tareas.html'
return render(request, 'catalog/tareas.html', {...})
但是您的模板名称为catalog/Tareas.html
。
如果您在不区分大小写的文件系统上进行开发,则在开发中不会看到任何错误。
但是,在生产中,Heroku在区分大小写的文件系统上运行,因此找不到模板。