Django模板继承功能失效,网页直接展示HTML源代码问题求助
问题原因
你页面直接展示HTML源码的核心问题出在views.py中render函数的参数使用错误:
Django的render函数第四个参数为content_type(响应内容类型),你将{'title': 'Bookish Bahrain - Home'}单独作为第四个参数传入,导致响应内容类型不符合标准,浏览器会将返回内容识别为纯文本而非HTML,直接展示源码。
解决步骤
- 修正
views.py中的context参数,将title字段合并到上下文字典中,修改后的index函数如下:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader # Create your views here. def index(request): text = "welcome to the website - python" posts = [ { 'title': 'The Fault in Our Stars', 'price': '3.0 BD', 'post_date': '24-10-2021' }, { 'title': 'The Black Swan', 'price': '3.5 BD', 'post_date': '23-10-2021' }, { 'title': 'Watchmen', 'price': '5.0 BD', 'post_date': '22-10-2021' } ] context = { 'text': text, 'posts': posts, 'title': 'Bookish Bahrain - Home' } return render(request, 'blog/index.html', context)
- 若修改后仍有问题,按以下顺序排查:
- 确认你的
blog应用已经添加到项目settings.py的INSTALLED_APPS列表中 - 确认模板文件存放路径符合配置:
base.html放在blog/templates/blog/目录下,index.html也在同一路径 - 确认
settings.py中TEMPLATES配置项的APP_DIRS值为True
注:你提到的Django 3.9.7版本不存在,大概率是将Python版本误记为Django版本,该差异不影响上述代码运行。
内容的提问来源于stack exchange,提问作者Crownofhay
相关产品推荐
相关产品推荐

