Django:Heroku上的生产应用无法找到带有“ path” urlpattern

时间:2019-04-02 18:52:31

标签: django heroku

我的生产基地在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,

    })

欢迎提供任何线索。预先感谢!

1 个答案:

答案 0 :(得分:1)

您的视图正在尝试呈现'catalog/tareas.html'

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

但是您的模板名称为catalog/Tareas.html

如果您在不区分大小写的文件系统上进行开发,则在开发中不会看到任何错误。

但是,在生产中,Heroku在区分大小写的文件系统上运行,因此找不到模板。