首页 > 其他分享 >模块层 模块的导入以及继承 ORM常用关键字

模块层 模块的导入以及继承 ORM常用关键字

时间:2022-12-14 21:47:19浏览次数:56  
标签: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

相关文章