python的Web框架,模板标签及模板的继承

模板标签

在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢。

给定的例子数据

views传递数据给html

 1 from django.shortcuts import render
 2
 3     def index(request):
 4
 5         students = [
 6             {‘id‘:12, ‘name‘:‘张三‘, ‘age‘:19, ‘sex‘:‘男‘}
 7             {‘id‘:22, ‘name‘:‘李思‘, ‘age‘:19, ‘sex‘:‘女‘}
 8             {‘id‘:25, ‘name‘:‘王五‘, ‘age‘:19, ‘sex‘:‘男‘}
 9             {‘id‘:43, ‘name‘:‘赵柳‘, ‘age‘:19, ‘sex‘:‘女‘}
10             {‘id‘:88, ‘name‘:‘孙奇‘, ‘age‘:19, ‘sex‘:‘男‘}
11         ]
12
13         return render(request,‘teacher/index.html‘,context={
14             ‘students‘:students,
15         })
for循环标签
 1    <body>
 2         <table>
 3             <tr>
 4                 <th>序列</th>
 5                 <th>姓名</th>
 6                 <th>年龄</th>
 7                 <th>性别</th>
 8             </tr>
 9
10             <!--#for循环写在{% %} 内-->
11             {% for stu in students %}
12                 <tr>
13                     <!--#把循环迭代的数据,用可以取出值即可-->
14                     <td>{{ stu.id}}</td>
15                     <td>{{ stu.name }}</td>
16                     <td>{{ stu.age }}</td>
17                     <td>{{ stu.sex }}</td>
18                 </tr>
19             <!--#结尾需要end-->
20             {% endfor %}
21         </table>
22     </body>

输出的结果为: css样式有过调整,请忽略样式

forloop:序号排列
 1 <body>
 2         <table>
 3             <tr>
 4                 <th>从1开始的正向排序</th>
 5                 <th>从0开始的正向排序</th>
 6                 <th>以1结尾的倒序</th>
 7                 <th>以0结尾的倒序</th>
 8             </tr>
 9             {% for stu in students %}
10                 <tr>
11                     <!--序号排列各式样式-->
12                     <td>{{ forloop.counter}}</td>
13                     <td>{{ forloop.counter0 }}</td>
14                     <td>{{ forloop.revcounter }}</td>
15                     <td>{{ forloop.revcounter0 }}</td>
16                 </tr>
17             {% endfor %}
18         </table>
19     </body>

输出的结果为:

if:if判断
 1 <body>
 2         <table>
 3             <tr>
 4                 <th>从1开始的正向排序</th>
 5                 <th>从0开始的正向排序</th>
 6                 <th>以1结尾的倒序</th>
 7                 <th>以0结尾的倒序</th>
 8             </tr>
 9             {% for stu in students %}
10
11                 <!--if判断和for循环一样,也有结尾的endif,条件写在中间。-->
12                 == 两头需要空格
13                 <tr {% if stu.sex == ‘女‘ %}style="color:red"{% endif %}>
14                     <td>{{ forloop.counter}}</td>
15                     <td>{{ stu.name }}</td>
16                     <td>{{ stu.age }}</td>
17                     <td>{{ stu.sex }}</td>
18                 </tr>
19             {% endfor %}
20         </table>
21     </body>

输出结果为:

简单获取url

views简单配置点击id所展示的页面

1     def st_id(request, pk):
2         return HttpResponse(‘学生ID为%s的详情页‘ % pk)

对序号设置点击的跳转url

 1  <body>
 2         <table>
 3             <tr>
 4                 <th>从1开始的正向排序</th>
 5                 <th>从0开始的正向排序</th>
 6                 <th>以1结尾的倒序</th>
 7                 <th>以0结尾的倒序</th>
 8             </tr>
 9             {% for stu in students %}
10                 <tr {% if stu.sex == ‘女‘ %}style="color:red"{% endif %}>
11
12                     <!--因为要点击url,所有把标签放在a标签内,在路径的配置上,写上路径然后把字典中的id做动态匹配就会得到需要的id。-->
13                     <td><a href="/teacher/st_id/{{ stu.id }}">{{ forloop.counter}}</a></td>
14                     <td>{{ stu.name }}</td>
15                     <td>{{ stu.age }}</td>
16                     <td>{{ stu.sex }}</td>
17                 </tr>
18             {% endfor %}
19         </table>
20     </body>

输出结果:

点击序列为1的网址显示:

url标签:动态获取url,返回一个命名(views中path里面的name的值)了的URL的绝对路径
 1 <body>
 2         <table>
 3             <tr>
 4                 <th>从1开始的正向排序</th>
 5                 <th>从0开始的正向排序</th>
 6                 <th>以1结尾的倒序</th>
 7                 <th>以0结尾的倒序</th>
 8             </tr>
 9             {% for stu in students %}
10                 <tr {% if stu.sex == ‘女‘ %}style="color:red"{% endif %}>
11
12                     通过url标签,动态生成对应的url网址,此处的‘teacher:st_id‘
13                     **需要在views中配置其中的path的name,name和此处的value需要一一对应。**
14                     <td><a href="{% url ‘teacher:st_id‘ stu.id %}">{{ forloop.counter}}</a></td>
15                     <td>{{ stu.name }}</td>
16                     <td>{{ stu.age }}</td>
17                     <td>{{ stu.sex }}</td>
18                 </tr>
19             {% endfor %}
20         </table>
21     </body>
for in empty 判断空置渲染默认的
1 {% for i in stu%}
2 <!--#如果for循环的渲染失败,则渲染empty内的条件-->
3 {% empty %}
4     <!--渲染方法-->
5
6 {% emdfor %}
with:类似于as

第一种写法:

1 {% with stu=students.2%}
2     stu就可以拿出来使用了
3 {% endwith %}

第二种写法

1 {% with test_name as tn %}
2     1111{{ tn }}
3     2222{{ tn }}
4 {% endwith %}
autoescape 转义开关 同过滤器的safe
1 {% autoescape off %}
2     {{ html }}
3 {% endautoescape %}

模板的引入

include 模板的引入,把写好的html模板添加到我们需要的html中,在html代码中添加

1 <div>
2     {% include ‘teacher/ad.html‘ %}
3 </div>

输出结果


模板的继承

extends继承标签:extends代买写在html的最上面,首行,在此行下面的代码无效。

被引入的内容写在block中

1     <!--在html中继承模板文件-->
2     {% extends ‘teacher/base.html‘%}
block自定义标签:在模板html中挖坑

base模板文件.html

 1  默认写css的坑
 2     {% block link%}
 3     {% endblock %}
 4
 5     <!--默认写body的地方-->
 6     {% block conrent(自定义名称) %}
 7
 8         <!--如果被引入的html,如果没有写这个标签,就默认展示模板内的数据,如果有,就展示当前html的内容数据。-->
 9         <p>模板内的数据</p>
10     {% endblock %}
11
12     <!--默认底部定义写js的坑-->
13     {% block domready %}
14     {% endblock %}

被引入的html文件,css,js,html代码都是此种方法写入。对应上面的模板

 1 {% extends ‘teacher/base.html‘%}
 2     {% load static %}
 3
 4     {% block link %}
 5     带入css代码
 6     <link rel="stylesheet" href="{% static ‘teacher/css/login.css‘ %}">
 7     {% endblock %}
 8
 9     {% block conrent %}
10         <p>我是被展示的数据</p>
11     {% endblock %}
12
13     {% block domready %}
14         <script>JS代码</script>
15     {% endblock %}

总结:

模板标签语法:
1     {% tag %} {% endtag %} 需要结束收尾的
2
3     {% tag 参数 参数 %} 例如 url
 

原文地址:https://www.cnblogs.com/hua888/p/10419860.html

时间: 2024-11-07 16:21:49

python的Web框架,模板标签及模板的继承的相关文章

Python之Web框架介绍

所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具

python 实现web框架simfish

python 实现web框架simfish 本文主要记录本人利用python实现web框架simfish的过程.源码github地址:simfish WSGI HTTP Server wsgi模块提供了简单的simple_server, wsgiref.simple_server.make_server(host, port, app, server_class=WSGIServer, handler_class=WSGIRequestHandler) 官方提供的例子, from wsgiref

python bottle web框架简介

Bottle 是一个快速,简单,轻量级的 Python WSGI Web 框架.单一文件,只依赖 Python 标准库 .bottle很适合会一点python基础的人使用,因为这框架用起来很简单,只要你会python基础语法,有一点WEB知识,就可以开发出很不错的WEB.学了python的运维人员,压根不需要django框架,就可以运维工具了,毕竟django学习起来,比较复杂,学习时间也长,我们有必要一定要使用django吗? URL 映射 (Routing): 将 URL 请求映射到 Pyt

测试Flask+PYTHON的WEB框架

参数URL: http://blog.csdn.net/qwiwuqo/article/details/8970621 安装flask之前,你必须要先安装python和easy_install. 安装 virtualenv,这个主要是用来做解释器环境隔离的,避免同一机器上的多个python或者多个python的库依赖. 然后cd到myvir目录的Scripts下输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask. 测试Flask+PYTHON的WEB框

Python之Web框架Django

Python之Web框架: Django 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 #web框架的基础结构,几乎所有开发者都是基于此基础结果进行扩展. 5 6 import socket 7 8 def handle_request(client): 9 buf = client.recv(1024) 10 clien

第一篇:Python高性能Web框架Tornado原理剖析

本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码 2.为Python开发一个完善的MVC框架 首先将带着大家一起来剖析基于python编写的Web框架 tornado ,本着易读易懂的目标来写这一系列,寄希让小白也能zeng明白其中的道理,与其说剖析还不如说是白话,因为本系列都会用通俗的语言去描述Web框架中的各个知识点. 一个脚本引发的一场"血案".... 运行脚本并在浏览器上访问http://127.0.0.1:8080 #!/usr/bin/env py

第二篇:Python高性能Web框架tornado源码剖析之待请求阶段

上篇<第一篇:Python高性能Web框架Tornado原理剖析>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) 简而言之: 1.在启动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestH

django[模板标签]django模板变量直接显示html代码的有关问题

django[模板标签]django模板变量直接显示html代码的问题    转 模板变量的内容,如果含html的话,django的模板系统默认会对输出进行转义,比如把<p>转义成 了<p> ,然后再显示出来的时候就如实地显示为<p>.要解决这个问题只要把默认的 转义去掉就好了.比如原本我们的模板代码是这样的:{{post.content}} 现在我们把它变成这样: {% autoescape off %} {{post.content}} {% endautoesca

模板标签及模板的继承与引用

模板标签及模板的继承与引用 一.模板标签 定义:标签在渲染的过程中提供任意的逻辑 语法:由 {%    %} 来定义的 例:1.循环列表数据 2.如果要判断性别的女的,背影色为黄色,否则为红色 3.如果要加序号 4.如果电话号码为空时,显示未填 {% for student in students %} <tr  {% if student.sex == "女" %}style = "background-color : yellow "    {% else