标签:html django 关键字 ORM block 模块 数据 模板
今日内容详细
模板层之标签
#支持使用if判断 for循环 和while循环
if 判断
{% if 条件1 %}
条件1满足执行的代码
{% elif 条件2 %}
条件2满足执行的代码
{% else %}
条件均不满足执行的代码
{% endif %}
for 循环
{% for k in 可迭代对象%}
{% if forloop.first %}
第一次循环执行的代码
{% elif forloop.last %}
最后一次循环的代码
{% else %}
循环体中间的代码
{% endif %}
{% empty %}
传入一个可被迭代但是数据为空的对象(空字符串 空列表) {% endfor %}
'''
django模板语法取值操作>>>:只支持句点符
句点符既可以点索引也可以点键
{{ 接收的数据.(直接写索引或者是键) }}
起别名(当复杂的数据获取之后需要反复使用可以取别名):
{{% with d1.2.a1 as 别名 %}}
<a href="">{{ 别名 }}</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 mytags %}
<p>{{ i|myadd:1 }}</p>
# 自定义标签(参数没有限制)
@register.simper_tag(name='mytag')
def func2(a,b,c,d,e):
return f'{a}-{b}-{c}-{d}-{e}'
{% load mytags %}
{% mytag 'xiaochen' 'kevin' 'oscar' 'tony' 'lili' %}
# 自定义inclusion_tag(局部的html代码)
@register.inclusion_tag('menu.heml',name='mymenu')
def func3(n):
html = []
for i in range(n):
html.append('<li>第%s页</li>'%i)
return locals()
{% load mytags %}
{% mymenu 20 %}
模板的继承与导入
#模板的继承
多个页面有很多相似的地方 我们可以采取下列方式
方式一:传统的复制粘贴
方式二:模板的继承
#模板继承的使用
1.在模板中使用block规定子板以后可以修改的区域
{% block 区域名称 %}
{% endblock %}
2.子板继承模块
{% extends 'html页面' %}
{% block 区域名称 %}
子板的内容
{% endblock %}
'''
{% extends 'html' %}
只要输入上述命令html则会完全等于选选中的那一张html
block可以添加在母版中用于对继承后单块做操作
在母版使用block来对一个区域进行命名后子模块可以修改该块内容
模块至少有三块区域 页面内容区、css样式区、js代码区
'''
3.子版块使用模块的内容
{{ block.super }}
#模块的导入
将某个html的部分提前写好 之后很多html页面都想使用就可以导入
{% include 'myform.html' %}
模型层前期的准备
1.django自带的数据库(sqlite3)对时间字段并不敏感 有时候在展示的时候会出现错乱 所以最好使用一些常见的数据库
注意: orm并不会自动创建库 需要提亲准备好
2.单层测试django某个功能层
默认不允许单独测试单个py文件 如果想要则是某个py文件
测试环境1:pycharm提供的python console
测试环境2:自己搭建(自带的test或者创建)
1.拷贝manage.py的前四行
2.再加上
import django
django.setup()
3.django orm底层还是SQL语句 我们是可以查看的
如果我们手上是一个Queryset对象 那么可以直接点query查看SQL语句
如果想要查看所有orm底层的SQL语句也可以在配置文件添加日志记录
ORM常用关键字
关键字 |
作用 |
create() |
创建数据并直接获取当前创建的数据对象 |
filter() |
根据条件筛选数据 结果是Queryset [ 对象1 ] |
first() last() |
获取数据集的第一个/最后一个 数据不存在则返回None |
update() |
更新数据(支持批量更新) |
delete() |
删除数据(支持批量删除) |
all() |
查询所有数据 结果是Queryset [ 对象1,对象2 ] |
vlues() |
根据指定字段获取数据 结果是QuerySet [{},{}] |
vlues_list() |
同上 结果是Queryset[(),()] |
disinct() |
对完全相同的数据进行去重 |
关键字 |
作用 |
order_by() |
根据指定条件进行排序 默认是升序 加负号变成降序 |
get() |
根据条件筛选数据并直接获取到数据对象 不存在则报错 |
exclude() |
去反操作 |
reverse() |
颠倒顺序(被操作的对象必须是已经排过序的才可以) |
count() |
统计结果集中数据的个数 |
exists() |
判断结果集中是否含有数据 有返回True 没有返回False |
标签:html,
django,
关键字,
ORM,
block,
模块,
数据,
模板
From: https://www.cnblogs.com/xiaochenxiangchangpang/p/16983666.html