模版语法

传值

视图函数向前端html页面传值,基本上所有的数据类型都可以渲染在前端页面上。

views.py

  1. from django.shortcuts import render, redirect, HttpResponse
  2. # Create your views here.
  3. def index(request):
  4. int_1 = 123
  5. str_2 = '测试'
  6. list_3 = [1, 2, 3]
  7. dict_4 = {'a': 1, 'b': 2}
  8. set_5 = {1, 2, 3, 4, 5}
  9. tuple_6 = (1, 2, 3,)
  10. float_7 = 3.1415926
  11. bool_8 = True
  12. return render(request, 'index.html', locals())

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>index</title>
  6. </head>
  7. <body>
  8. <p>{{ int_1 }}</p>
  9. <p>{{ str_2 }}</p>
  10. <p>{{ list_3 }}</p>
  11. <p>{{ dict_4 }}</p>
  12. <p>{{ set_5 }}</p>
  13. <p>{{ tuple_6 }}</p>
  14. <p>{{ float_7 }}</p>
  15. <p>{{ bool_8 }}</p>
  16. </body>
  17. </html>

但是需要注意的是函数的渲染,如果在html页面渲染函数的话,不需要加括号就会会直接执行该函数,如果有返回值就会在页面显示返回值,没有返回值会显示None。类里面的函数也可以调用,但是也不要加括号,和flask模版语法不一样。

模版取值直接用点语法。

过滤器

模板过滤器可以在变量被显示前修改它,过滤器使用管道字符

  1. {{ 变量名 | 过滤器:可选参数 }}

length

返回对象的长度,适用于字符串和列表。

字典返回的是键值对的数量,集合返回的是去重后的长度。

  1. def index(request):
  2. name = 'isable'
  3. return render(request, 'index.html', locals())
  1. {# html页面 #}
  2. {{ name|length }}
  3. {# 输出长度结果 #}

date

根据给定格式对一个日期变量进行格式化。

格式 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。

  1. import datetime
  2. def index(request):
  3. ctime = datetime.datetime.now()
  4. print(ctime)
  5. return render(request, 'index.html', locals())
  1. {{ ctime|date:'Y-m-d H:i:s' }}

filesizeformat

以更易读的方式显示文件的大小(即'13 KB', '4.1 MB', '102 bytes'等)。

字典返回的是键值对的数量,集合返回的是去重后的长度。

  1. def index(request):
  2. file_size = 102900291913
  3. return render(request, 'index.html', locals())
  1. {{ file_size|filesizeformat }}

seaf

将字符串标记为安全,不需要转义。

要保证 views.py 传过来的数据绝对安全,才能用 safe。

和后端 views.py 的 mark_safe 效果相同。

为了防止XSS攻击,Django 会自动对 views.py 传到HTML文件中的标签语法进行转义,令其语义失效,在前端渲染成文本。加 safe 过滤器是告诉 Django 该数据是安全的,不必对其进行转义,可以让该数据语义生效。

  1. from django.shortcuts import renderdef index(request): views_str = "<script>alert(111)</script>" return render(request, "index.html", {"views_str": views_str})
  1. {{ views_str|safe }}

标签

for标签

与python中for循环语句类似每一次循环中,模板系统会渲染在 {% for %}{% endfor %} 之间的所有内容。

  1. def index(request): l1 = [1, 2, 4, 5, 6] return render(request, 'index.html', locals())
  1. {% for foo in l1 %} <p>{{ foo }}</p>{% endfor %}

在 {% for %} 标签里可以通过 {{forloop}} 变量获取循环序号。

  • forloop.counter: 顺序获取循环序号,从 1 开始计算
  • forloop.counter0: 顺序获取循环序号,从 0 开始计算
  • forloop.revcounter: 倒叙获取循环序号,结尾序号为 1
  • forloop.revcounter0: 倒叙获取循环序号,结尾序号为 0
  • forloop.first(一般配合if标签使用): 第一条数据返回 True,其他数据返回 False
  • forloop.last(一般配合if标签使用): 最后一条数据返回 True,其他数据返回 False

继承

模板可以用继承的方式来实现复用,减少冗余内容。

网页的头部和尾部内容一般都是一致的,我们就可以通过模板继承来实现复用。

父模板用于放置可重复利用的内容,子模板继承父模板的内容,并放置自己的内容。

  1. # 父模板 给子模版需要更改的地方括起来 做标记{% block content_name %} # 需要更改的内容 {% endblock %}
  1. # 子模板{% entends 'home.html' %} #继承父模板内容{% block content_name %} # 子模版内容{% endblock %}

Django测试环境的搭建

将manage.py文件里面的以下代码复制到app文件里面的tests.py:

  1. import osimport sysif __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoProject02.settings") import django django.setup

需要注意的是 导入其他py文件的时候需要在django.setup()下面写。这时候就直接可以右键运行。

ORM单表中查询的方法

values

  1. # 字段查询res = modes.User.objects.values('name', 'age')# 列表套字典

values_list

  1. # 字段查询,与values用法一致# 返回值是列表套元组

去重

  1. # 去重不要带主键字段,否则去重就没意义models.User.objects.values('name').distinct()

排序

  1. res = model.User.object.values('name' 'age').order_by('-age') # 默认是升序 给字段加上负号就是降序

reverse

  1. res = modes.User.objects.order_by('age').reverse()# 倒序

count

  1. # 统计出现次数res = models.User.objects.filter(name='egon').count()

Django 模版语法 测试环境 ORM单表查询的更多相关文章

  1. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  2. ORM单表查询,跨表查询,分组查询

    ORM单表查询,跨表查询,分组查询   单表查询之下划线 models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值models ...

  3. django之orm单表查询

    这几天重新学习了一下django的orm,以此作为记录来分享. Part1:修改配置,生成表 在写数据和查数据之前,首先先得把django配置一下,具体配置如下: 1.先在公共项目的settings中 ...

  4. 54 Django 模型层(1) 单表查询

    单表操作: 一 项目的操作顺序: 1 在model.py文件中创建表结构 class Book(models.Model): id=models.AutoField(primary_key=True) ...

  5. orm单表查询和模糊查询

    一.单表查询 1. 返回queryset对象的查询 all() 以列表形式返回全部queryset对象 filter(**kwargs) 筛选 exclude(**kwargs) 排除 reverse ...

  6. Django ORM单表查询必会13条

    必知必会13条 操作下面的操作之前,我们实现创建好了数据表,这里主要演示下面的操作,不再细讲创建准备过程 <1> all(): 查询所有结果 <2> filter(**kwar ...

  7. django框架基础-ORM单表操作-长期维护

    ###############    单表操作-添加数据    ################ import os if __name__ == '__main__': os.environ.set ...

  8. Django框架05 /orm单表操作

    Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...

  9. mysql(单表查询,多表查询,MySQl创建用户和授权,可视化工具Navicat的使用)

    单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT ...

随机推荐

  1. XCTF WEB backup

    不用多说,肯定是扫描后台,目录看看能不能找到备份文件,(可恶我的御剑的字典太菜了,居然爆破不出来),建议大家装御剑高一些的版本,或者用dirsearch来扫描,都是不错的. 这里插个知识点,备份文件常 ...

  2. Leetcode No.35 Search Insert Position(c++实现)

    1. 题目 1.1 英文题目 Given a sorted array of distinct integers and a target value, return the index if the ...

  3. 单片机与PLC的区别?

    单片机顾名思义集成在一个芯片内的计算机系统,又叫单片微控制器,英文:mcu,具有计算机的全部功能.PLC是英文Programmable Logic Controller的简称,翻译过来就是可编程逻辑控 ...

  4. kali中设置共享文件夹

    1.在虚拟机设置共享目录 2.查看共享目录命令 root@kali:~# vmware-hgfsclient 3.新建文件夹 root@kali:~# mkdir /mnt/hgfs/ShareDir ...

  5. Java Map 集合类在selenium自动化测试设计中的应用

    我们在设计自动化测试用例的时候,往往很多工作是在处理测试的数据. 测试数据无论用Excel 文件, XML文件或者任何一种形式测存储方式,都会设计到参数化以及我们对数据的操作. 这个时候,我们会用到以 ...

  6. C语言:char[]操作

    C语言中char[]的操作函数1.赋值操作在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women";char c2 ...

  7. 学习 CLR 源码:连续内存块数据操作的性能优化

    目录 C# 原语类型 1,利用 Buffer 优化数组性能 2,BinaryPrimitives 细粒度操作字节数组 提高代码安全性 3,BitConverter.MemoryMarshal 4,Ma ...

  8. python编程面试题

    # 实现需求为 注册.登录.查看昵称的功能 # def userN(): #     username = input("请输入账号: \n") #     password =  ...

  9. vue(22)Vuex的安装与使用

    前言 每一个 Vuex 应用的核心就是 store(仓库).store基本上就是一个容器,它包含着你的应用中大部分的状态 (state).Vuex 和单纯的全局对象有以下两点不同: Vuex 的状态存 ...

  10. shell脚本(5)-shell变量

    一.变量介绍 将一些数据需要临时存放在内存中,以待后续使用时快速读出. 二.变量分类 1.本地变量: 用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile..bashrc文件中 ...