我有一个start.html文件,我试图在localhost:8000 / begin访问,但是在尝试访问时遇到DjangoTemplateDoesNotExist错误。
该模板中唯一的东西是
<h1>welcome to my app !</h1>
并且它位于app / template目录中。
在同一个app目录中是我的views.py文件,其中包含
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Create your views here.
def begin(request):
print("DEBUG STATEMENT")
return render(request, "template/begin.html", {})
start中的return语句已经到达,因为print语句和traceback告诉我,但是Django之后无法找到模板。
如果相关,我的urls.py文件是
from django.conf.urls import url
from django.contrib import admin
from app.views import begin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^begin/$', begin, name = 'begin')
]
在项目目录中。
答案 0 :(得分:0)
由于您尚未提供相关信息,因此我在您的应用中将其视为urls.py
。如果您有两个urls.py
,则需要从django所在的第一个网址重定向到另一个网址。
from django.conf.urls import include
urlpatterns = [
url(r'^', include('YOURAPPNAME.urls'))
]
在urls.py中的appdirectory中写
from . import views //importing views from current directory
urlpatterns = [
url(r'^begin/$' views.begin, name=begin)
]
另一个提示,考虑在使用http响应时使用render_to_response,我知道渲染是较新的但是由于你正在使用响应,我会在你的情况下使用render_to_response,并跳过上下文。
return render_to_response('YOURAPPNAME'/begin.html)
答案 1 :(得分:0)
检查您的模板结构是否像这样,
your_app_name
--> **templates**
--> **your_app_name**
--> **'begin.html'**
--> static
--> models.py
--> ........
然后,改变你的观点,像这样,
return render(request, "your_app_name/begin.html", {})
Django默认检查app_directory中名称为“templates”的目录。 在容纳多个应用程序时,为了方便,模板会保存在app_name目录下。
来自docs,
在包含模板的每个目录中的子目录中组织模板是可能的 - 也是最好的。惯例是为每个Django应用程序创建一个子目录,并根据需要在这些子目录中包含子目录。
为了你自己的理智而这样做。将所有模板存储在单个目录的根级别会变得混乱。
当APP_DIRS为True时,DjangoTemplates引擎会在已安装应用程序的 templates 子目录中查找模板。保留此通用名称是为了向后兼容。