python - 如何解决 django TemplateDoesNotExist
问题描述
网站视图.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def minjuand(request):
posts = Post.objects.filter(published_date__lte = timezone.now()).order_by('published_date')
return render(request,'blog/minjuand.html',{'posts':posts})
网址.py
from django.urls import path
from . import views
urlpatterns=[
path('', views.minjuand, name="minjunad"),
]
在 settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, '..', 'templates')
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
我settings.py
在末尾添加了我的应用程序INSTALLED_APPS
并检查了拼写错误。为什么 Django 找不到我的模板?
我正在 Windows 10 上使用 Django 3.1.4 和 Python 3.9.0 进行开发。
解决方案
无需在 Django 设置中定义额外的模板目录。所有注册的应用程序(在您的INSTALLED_APPS
列表中的应用程序settings.py
)都使用默认模板目录my-app-directory/templates/
。
在您的应用程序目录中,创建一个名为templates
(全部小写)的文件夹,将您的模板放在此文件夹中。因此,如果您有一个名为的应用程序blog
,它将如下所示:
> blog/
> migrations/
> 0001_initial.py
> templates/
> my_template.html
> admin.py
> apps.py
> models.py
> views.py
> mysite/
> settings.py
> urls.py
> wsgi.py
> manage.py
然后,您可以在如下视图中使用您的my_template.html
模板:
def my_view(request):
context = {}
return render(request,'my_template.html', context)
注意,我们引用模板就像我们在templates/
目录中一样
推荐阅读
- jointjs - 在中心旋转元素
- python-3.x - 请帮助在python中编写一个tcp udp扫描程序
- python - 如何在循环中使用函数中的结果?
- python - 如何在 Google Colab 中恢复未保存的代码
- javascript - 如何在 v-for 上分配 v-model(来自 bootstrap vue 示例)
- meteor - Meteor.js Tracker.autorun / Tracker.depend 以设置的间隔从服务器端导出的变量
- javascript - p5js中的音频文件循环
- jquery - 在MVC中通过ajax post传递数据模型
- algorithm - 如何尽可能快地进行矩阵计算
- python - 从`中提取内容