7、使用包含继承,设计我前端的样式,从前端向后传递数据

一、技术准备:

模板(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添加

def home(request):
    return render(request, "home.html", context)
def room(request):
    return render(request, "room.html")

第二步:通过url中参数传递进入不同页面

总结:从后端通过响应往前端页面传递数据使用【返回值】 render(,,context)
从前端通过url参数/<str:pk> —->对应的方法的【入参】 room(request,pk)

1、urls.py

path('room/<str:pk>/', views.room,name=‘room')

2、views.py

def room(request,pk):

3、home.html

{% for room in rooms  %}
    <h3>{{room.id}} -- <a href="/room/{{room.id}}">{{room.title}}</a></h3>
{% endfor %}

4、获取所有的数据包括id,并改为Article类(显示文章)views.py中

rooms = models.Article.objects./all()

5、在返回的 判断符合 的id后将这个 id的内容显示在页面中。

def room(request, pk):
    room=models.Article.objects.get(id=pk)
    context={'room':room}
    return render(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 %}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容