Django模板不会加载,但HttpResponse将加载

时间:2020-03-11 00:38:46

标签: python django web

我最近开始学习django,遇到了一些麻烦,我不知道为什么。

我的问题很简单:每当我尝试使用模板运行主页时,都会引发404错误。

我的文件层次结构如下:

crm
 accounts
  templates
   accounts
    dashboard.html
  urls.py
  views.py
 crm
  urls.py

在crm / url中,我有

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('accounts.urls'))

然后在帐户/网址中,

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

在视图中,我有

from django.shortcuts import render
from django.http import HttpResponse


def home(request):
    return render(request, 'accounts/dashboard.html')

我的dashboard.html只是一个带有标题和h1的基本html文件。

此外,每当我更改

return render(request, 'accounts/dashboard.html')

return HttpResponse('home')

在我的home函数中,它决定显示。

1 个答案:

答案 0 :(得分:0)

您的dashboard.html位于文件夹内,因此应像accounts/dashboard.html一样引用它

相关文档:https://docs.djangoproject.com/en/3.0/intro/tutorial03/#a-shortcut-render

在他们的示例中,他们使用polls/index.html(从文档中的链接位置向上滚动一点)。它类似于您的accounts/dashboard.html的位置(两者都应放在子文件夹中)。


Django以与搜索静态文件相同的方式在多个应用程序中查找模板。除了可以“看到”静态文件并使用manage.py collectstatic复制到单独的文件夹,而模板被“发现”到位并且没有被复制到任何地方。在facg中,如果您正在运行manage.py runserver,则还会在适当位置发现静态文件,因此逻辑是相同的。
一个区别是可以使用一组不同的加载程序(docs on template loaders)来更改模板加载,但是默认情况下(对于我猜想的大多数项目),这种相似性保持不变。