赞
踩
Django设计网页时,模版继承标签extends和包含页面标签include提供了较好的灵活性,但作为初学者在使用时还是遇到了一个问题。
例如在项目project1新建一个应用例如app1,一个应用所定义的模版一般放在templates目录下。为了使用模版,需要在project1下建立templates文件夹。项目一般可以包含多个不同的应用,为了区分多个应用,一般在templates下创建一个目录专门放置某个应用的网页模版。例如,在project1项目中建立templates\home\来放置app1的模版页。按照要求,在settings.py,views.py,urls.py中进行设置后,便可以在templates\home\中建立渲染(render)网页的模版,例如index.html。
- def index(request):
- return render(request, 'home/index.html')
为了使用母版页,在home文件夹中新建base.html(母版页),母版页包含了top.html(页面顶端组件),footer.html(页面底端组件),在包含两个组件时,分别采用{% include "top.html" %}
和{% include "footer.html" %}
。在内容页index.html中继承母版页,使用{% extends "base.html" %}
。
在浏览器中输入设定好的路由http://localhost:8000/index/后出现错误:
- TemplateDoesNotExist at /index/
- base.html
- Request Method: GET
- Request URL: http://localhost:8000/index/
- Django Version: 3.2.13
- Exception Type: TemplateDoesNotExist
- Exception Value:
- base.html
下面的提示为:
- Template-loader postmortem
- Django tried loading these templates, in this order:
-
- Using engine django:
-
- django.template.loaders.filesystem.Loader: E:\lingcheng\templates\base.html (Source does not exist)
- django.template.loaders.app_directories.Loader: D:\Anaconda3\lib\site-packages\django\contrib\admin\templates\base.html (Source does not exist)
- django.template.loaders.app_directories.Loader: D:\Anaconda3\lib\site-packages\django\contrib\auth\templates\base.html (Source does not exist)
看来是Django找不到文件了,从上述提示看,修改{% extends "home/base.html" %},以及母版页base.html中的两个包含标签
:{% include "home/top.html" %}
和{% include "home/footer.html" %}。再次浏览网页,便可以了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。