当前位置:   article > 正文

Django的extends和include使用中的问题_{% extends"base.html"%}不能运行

{% extends"base.html"%}不能运行

Django设计网页时,模版继承标签extends和包含页面标签include提供了较好的灵活性,但作为初学者在使用时还是遇到了一个问题。

例如在项目project1新建一个应用例如app1,一个应用所定义的模版一般放在templates目录下。为了使用模版,需要在project1下建立templates文件夹。项目一般可以包含多个不同的应用,为了区分多个应用,一般在templates下创建一个目录专门放置某个应用的网页模版。例如,在project1项目中建立templates\home\来放置app1的模版页。按照要求,在settings.py,views.py,urls.py中进行设置后,便可以在templates\home\中建立渲染(render)网页的模版,例如index.html。

  1. def index(request):
  2. 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/后出现错误:

  1. TemplateDoesNotExist at /index/
  2. base.html
  3. Request Method: GET
  4. Request URL: http://localhost:8000/index/
  5. Django Version: 3.2.13
  6. Exception Type: TemplateDoesNotExist
  7. Exception Value:
  8. base.html

下面的提示为:

  1. Template-loader postmortem
  2. Django tried loading these templates, in this order:
  3. Using engine django:
  4. django.template.loaders.filesystem.Loader: E:\lingcheng\templates\base.html (Source does not exist)
  5. django.template.loaders.app_directories.Loader: D:\Anaconda3\lib\site-packages\django\contrib\admin\templates\base.html (Source does not exist)
  6. 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" %}。再次浏览网页,便可以了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/769218
推荐阅读
相关标签
  

闽ICP备14008679号