今日内容概要

模板层之标签

if判断

    {% if 条件1 %}			#条件1成立
<p>Hello!</p> #执行
{% elif 条件2 %} #条件1不成立 条件2成立
<p>Hi!<p> #执行
{% else %} #条件1条件2都不成立
<p>Bye!</p> #执行
{% endif %}

for循环

    {% for k in d1 %}
<p>{{ k }}</p>
{% endfor %} 循环打印字典里的key

关键字:forloop

结合使用

    {% for k in d1 %}
{% if forloop.first %}
<p>这是我的第一次循环 {{ k }}</p>
{% elif forloop.last %}
<p>这是我的最后一次循环 {{ k }}</p>
{% else %}
<p>这是中间循环 {{ k }}</p>
{% endif %}
{% endfor %}

关键字:empty (检测数据是否为空 支持for循环 里面却没有数据值的 )

    {% for k in t1 %}
{% empty %}
<p>你给我传的是空的</p>
{% endfor %}

django模板语法取值操作>>>:只支持句点符

​ 句点符据可以点索引也可以点键

    d1 = {'name': 'jason', 'age': 18,'hobby':['read','music',{'a':111,"b":222}]}
#拿111
{{ d1.hobby.2.a }} {% with d1.hobby.2.a as H %}
<a href="">{{ H }}</a> #复杂数据获取后需要经常使用 可以起别名
{% endwith %}

自定义过滤器、标签及inclusion_tag(了解)

'''
必须要先完成下列的三步走战略
1.在应用下创建一个templatetags的目录
2.在上述目录下创建任意名称的py文件
3.在上述文件内先编写两行固定代码
from django import template
register = template.Library()
'''

自定义过滤器

@register.filter(name='myadd')
def func1(a,b): #最大只能接收两个参数
return a*b 要先加载过滤器
{% load xxx %} #自己创建的py文件名字
<p>{{ i|myadd:1 }}</p>

自定义标签

@register.simple_tag(name='mytag')
def func2(a,b,c) #参数没有限制
return f'{a}-{b}-{c}'
{% load xxx %}
{% mytag 'jason' 'kevin' 'joyce' %}

自定义inclusion_tag(局部html代码)

@register.inclusion_tag('menu.html',name='mymenu')
def func3(n):
html=[]
for i in range(n):
html.append('<li>第%s个<li>'%i)
return locals() {% load mytags %}
{% mymenu 20%}

模(母)板的继承与导入

模板的继承

多个页面有很多相似的地方 我们可以采取下列方式
方式1: 传统的复制粘贴
方式2:模板的继承
1.在模板中使用block挂顶子板以后可以修改的区域
{% block 区域名称(随便) %}
{% endblock %} 2.子板继承模板
{% extends 'home。html' %}
{% block 区域名称 %}
子板自己的内容
{% endblock %} ps:模板中至少应该有三个区域
页面内容区、css样式区、js代码区



子板也可以继续使用模板的内容

        {{ block.super}}

        可以连续要

模板的导入

    新建一个不是一个完整的页面 单独封装
将某个html的部分提前写好 之后很多html页面都想使用就可以导入
{% include 'myfrom.html'%}

模型层之ORM常见关键字

1.自带的sqlite3数据库对视键字段不够敏感 有时会展示错乱

auto_now_add 创建数据自动获取当前时间 后续不人为i操作的话不会修改
auto——now 每次操作数据都会自动更新当前数据

2.单独测试django某个功能层

默认不允许单独测试某个py文件

测试环境搭建:

测试环境1:pycharm提供的python console

测试环境2:自己搭建(自带的test或者自己建一个py文件)
1.拷贝manage.py前四行
2.自己在加两行
import django
django.setup()

3.django orm底层还是sql语句 我们可以查看

如果我们手上是一个QuerySet对象 那么可以直接点query查看sql语句

如果想查看orm底层的sql语句也可以在配置文件中添加日志记录

orm常用关键字

1.create()

2.filter()

3.first() last()

4.update()

5.delete()

6.all()

7.values()

8.values_list()

9.distinct()

10.order_by()

11.get()

12.exclude()

13.reverse()

14.count()

15.exists()

模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常用关键字的更多相关文章

  1. 模板层之标签 自定义过滤器及标签 模板的继承与导入 模型层之前期准备 ORM常用关键字

    目录 模板层之标签 if判断 for循环 自定义过滤器.标签及inclusion_tag(了解) 前期三步骤 自定义过滤器(最大只能接收两个参数) 自定义标签(参数没有限制) 自定义inclusion ...

  2. 12月14日内容总结——模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常用关键字

    目录 一.模板层之标签 分支结构if for循环 with(定义变量名) 二.自定义过滤器.标签及inclusion_tag(了解) 三.母版(模板)的继承与导入(重要) 四.模型层之前期准备 模型层 ...

  3. 模板层语法、模板层之标签、模板的继承与导入、模型层之ORM常见关键字

    模板层语法.模板层之标签.模板的继承与导入.模型层之ORM常见关键字 一.模板层语法 1.模板语法的传值 urls代码: path('modal/', views.modal) views代码: de ...

  4. Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

    前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 ...

  5. django 模板语言之 filter 自定义模板

    可以自己写python函数放在模板语言里用 这种方法是django里面的 filter {{ item.event_start|date:"Y-m-d H:i:s"}} {{ bi ...

  6. django 模板语言之 simple_tag 自定义模板

    自定义函数 simple_tag a. app项目下创建templatetags目录 b. 创建任意xxoo.py文件 用做自定义py函数 c. 创建template对象 register 在函数或者 ...

  7. python之路49 模板层标签 自定义过滤器 模板继承、模型层准备、ORM部分操作

    模板层之标签 {% if 条件1(可以自己写也可以是用传递过来的数据) %} <p>周三了 周三了</p> {% elif 条件2(可以自己写也可以用传递过来的数据) %} & ...

  8. xcode5 自定义模板

    经过一番周折,终于在xcode5上实现了一个简单的自定义模板,在项目中集成NSLogger库(增强NSLog的功能,https://github.com/fpillet/NSLogger)——新建项目 ...

  9. Django模型层ORM学习笔记

    一. 铺垫 1. 连接Django自带数据库sqlite3 之前提到过Django自带一个叫做sqlite3的小型数据库,当我们做本地测试时,可以直接在sqlite3上测试.不过该数据库是小型的,在有 ...

随机推荐

  1. 第一种方式:使用form表单将前端数据提交到servelt(将前端数据提交到servlet)

    第二种使用Ajax的形式将前台的数据传输到后台:https://blog.csdn.net/weixin_43304253/article/details/120335657 1.form表单 引入了 ...

  2. grpc错误处理

    0.1.索引 https://waterflow.link/articles/1665938704477 我们都知道当发起http请求的时候,服务端会返回一些http状态码,不管是成功还是失败.客户端 ...

  3. C#中ref和out关键字的应用以及区别(参数修饰符)

    ref ref的定义 ref是reference的缩写,通过引用来传递参数的地址,ref基本上是服务于值类型的 ref的使用 //不使用 ref; void Method(int myRefInt) ...

  4. nordic——nrf52系列SWD设置回读保护

    在开发时可能需要回读保护功能,在产品出厂后这个功能可以让你的代码更加安全,无法用SEGGER或者其余方式读取你的代码HEX文件,也就是禁用SWD下载接口.但是SWD锁住了,还想使用(从新下载代码)也是 ...

  5. Java函数式编程:二、高阶函数,闭包,函数组合以及柯里化

    承接上文:Java函数式编程:一.函数式接口,lambda表达式和方法引用 这次来聊聊函数式编程中其他的几个比较重要的概念和技术,从而使得我们能更深刻的掌握Java中的函数式编程. 本篇博客主要聊聊以 ...

  6. Perl引用

    引用就是C语言中的指针,perl引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 在变量前面加一个\就得到了这个变量的一个引用 #!usr/bin/p ...

  7. docker使用bind9实现域名解析

    目录 刷新服务 修改配置文件 从 114 缓存 查询 数据 可以 dig 无法 ping 查看 已经 区域 解析,并添加 新的 解析 项 在 linux 安装 局域网 cert rndc 查看 默认的 ...

  8. 修复 docker build 错误 "ERROR: No build stage in current context"

    若 docker build 时遇到了错误 "ERROR: No build stage in current context",则有可能是没有将 FROM 命令语句放置在第一行. ...

  9. Training: Encodings I

    原题链接:http://www.wechall.net/challenge/training/encodings1/index.php 根据题目信息貌似是让我们用这个JPK来解码,我们先点击JPK去下 ...

  10. Day24.1:抽象类的详解

    抽象类 1.1抽象类概述 一个动物类中,我们创建对象时会去new一个动物:但是我们不应该直接创建动物这个对象,因为动物本身就是抽象的,没有动物这种实例,我们创建的应该是一个具体的动物类,比如猫.狗等动 ...