一、技术准备:
模板(template)包含、继承与 {% block %} 的用法
{% include %} 标签
在项目的开发过程中,有很多页面的某些内容都是一样的,比如页面的导航条,页脚的部分,在每个页面都是一样的,我们 将相同的代码,抽出来,使用时用{% include %}标签。
{% extends "main.html" %} 的意思是继承 main.html页面的代码,使用继承方法的话,这个代码一定要放页面的第一行。
代码{% block xxx %}{% endblock %} 里的xxx可以自由命名,这个代码意思是告诉模板引擎:这个位置我要预留给别人放东西的。这个部分子模板可以重载,每个{% block%}标签所要做的是告诉模板引擎,该模板下的这一块内容将有可能被子模板覆盖。
二、具体步骤如下:
第一步:前端技术加强-html模板应用
1、建立navbar.html文件,是导航条
image.png
2、建立main..html,主页,包括导航和不同的块,等子模板覆盖。
image.png
3、建立home.html,继承主页,把预留的块填写上自己的内容
image.png
4、建立room.html文件,同上。
5、响应views.py添加
defhome(request):returnrender(request,"home.html",context)defroom(request):returnrender(request,"room.html")
第二步:通过url中参数传递进入不同页面
总结:从后端通过响应往前端页面传递数据使用【返回值】 render(,,context)
从前端通过url参数/ —->对应的方法的【入参】 room(request,pk)
1、urls.py
path('room/<str:pk>/',views.room,name=‘room')
2、views.py
defroom(request,pk):
3、home.html
{% for room in rooms %}<h3>{{room.id}} --<ahref="/room/{{room.id}}">{{room.title}}</a></h3>{% endfor %}
4、获取所有的数据包括id,并改为Article类(显示文章)views.py中
rooms = models.Article.objects./all()
5、在返回的 判断符合 的id后将这个 id的内容显示在页面中。
defroom(request,pk):room=models.Article.objects.get(id=pk)context={'room':room}returnrender(request,"room.html",context)
6、room.html
{% extends 'main.html' %}{% block content %}@{{room.user}}<h1>{{room.title}}</h1><div><h4>{{room.intro}}</h4></div><h5>{{room.created_time}}</h5>{% endblock content %}