Django模板语言的学习
1.模板系统
1.语法
1.变量相关
{{ name}} ,{{ name|length}}, {{ name |default:"默认值"}}
2.逻辑相关
1.if判断
{% if a > b %} //{% if a in b%}
{% endif %}
{% if a > b %}
{% else %}
{% endif %}
{% if a > b %}
{% elif %}
{% else %}
{% endif %}
2.for循环
{% for i in name-list %}
{{ i }}
{% empty %}
<p>如果为空的话这里可以填写一些提示内容</p>
{% endfor %}
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0
forloop.first
forloop.last
forloop.parentloop -->两层循环
2.filter
1.常用的filter
1. length
2. filesizeformat -->格式化文件大小的
3. date:'Y-m-d H:i:s' -->格式化时间
4. silce 切片
5. safe -->XSS攻击 通过评论的方式写一段JS代码
6. truncatechars:20 -->截取字符长度 一边用来摘要
7. default -->默认
2. 自定义的filter
步骤
定义阶段
1. 在app下新建一个python的包:templatetags包
2. 在上面的python包中新建一个python文件 名字随意
3. 在上述的python文件中
form django import template
#生成一个注册用的示例
register = template.Libray() #注意是大写的
#定义一个自定义的filter
@register.filter(name='new_filter')
def add_str(arg): (最多有两个参数) #第一个参数是通道符前面的 ,可以有第二个参数
return ...
调用阶段
1. 在Django模板文件中,导入刚才新建的python文件
{% load py文件名 %}
2. 按照filter的语法调用
{{ name|new_filter}} #没有第二个参数传入
{{ name|new_filter:arg2 }} #传入第二个参数
3.母版与组件
1.什么时候用母版
html页面有重复的代码的,把他们提取出来放到一个单独的html文件
2.子页面如何使用母版
{% extends 'base.html' %} -->必须放在第一行
{% block 块名 %} {% endblock %} -->子页面使用block去替换母版中同名的块
3.组件
1.什么时候使用组件
重复代码 包装成一个小的html文件
2.如何使用
{% include '组件.html' %}
3.Django模块语言中关于静态文件的灵活写法
1.利用static方法帮我凭借静态文件的路径
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
{% load static %}
<link href="{% static 'bootstarp/css/bootstrap.min.css' %}" rel="stylesheet">
4.自定义的simple_tag
比filter传入的参数多
5.有自定义的inclusion_tag
用来返回一段html代码
1.在定义阶段
在app中下面新建templatetags文件夹
新建一个xx.py文件
from django import template
#生成注册示例 ,名字必须是register
register = template.Library()
@register.inlcusion_tag('ul.html')
def show_ul(num):
num = 1 if num < 1 else int(num)
data = {"第{:0>3}号技师".format(i) for i in range(1,num+1)}
return {'data':data}
2.调用阶段
{% load xx文件名 %}
{% show_ul 10 %}
4.视图
1.CBV和FBV
CBV基于类的视图
FBV基于方法的视图
2.request对象
1.相关方法
1.request.method -->获取请求的方法(GET或者POST等)
2.request.GET -->通常用来获取URL里面的参数
3.request.POST -->通常用来获取POST提交过来的数据
4.request.path_info -->获取用户请求的路径
5.request.body -->获取用户POST的内容字节形式
5.文件上传
注意form表单里面需要有 enctype="multipart/form-data"
在保存上传文件钱,数据需要存放到某个位置,默认担当上传文件小于2.5M的时候,django会将上传文件的全部内容直接上传
当上传文件很大的时候,django会把上传文件写到临时文件中,然后存放到系统的临时文件里
在后台处理的时候调用
<input type='file' name='filename'>
request.FILES['filename'] -->获取文件对象
request.FILES['filename'].name -->获取文件对象名
request.FILES['filename'].chunks() -->从文件对象中一点一点的读取 需要写个循环读取
4.路由系统
1.分组匹配 -->给视图函数传一个位置参数
path('delete_p_list/[0-9]{2}/$',views.delete_p_list),
<a href="/delete_p_list/{{ publisher.id }}">删除</a></button>
2.分组命名匹配 -->给视图函数传一个关键字参数
3.反向解析URL
本质上就是给url匹配模式起别名 然后再用别名拿到具体的URL路径
re_path('publisher_list/[0-9]{2}/$',views.Publisher.as_view(),name='pulisher_list'),
<a href="{% url 'pulisher_list' %}" class="active">
1.如何使用
在模板语言中
{% url '别名' %}
在视图中
from django import reverse
reverse('别名') -->得到一个具体的URL路径
Django模板语言的学习的更多相关文章
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django模板语言初识
一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- Django模板语言的复用
一.include标签 由于在项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的,基于这个问题,我们可以采用模板语言复用include标签来帮我们解决,这样就避免 ...
- Django模板语言相关内容 Djan
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django——模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django 模板语言 路由 视图
. 模板语言(字符串替换) . 母版和继承 . 什么时候用母版? html页面有重复的代码,把它们提取出来放到一个单独的html文件. (比如:导航条和左侧菜单) . 子页面如何使用母版? {% ex ...
- django模板语言的注释
就像HTML或者Python,Django模板语言同样提供代码注释. 注释使用 {# #} : ? 1 {# This is a comment #} 注释的内容不会在模板渲染时输出. 用这种语法的注 ...
- Django模板语言(常用语法规则)
Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...
- Django模板语言与视图(view)
常用语法 {{ }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...
随机推荐
- BiseNet阅读总结
一.思路 语义分割既需要丰富的空间信息,又需要较大的感受野.然而,现代方法通常会牺牲空间分辨率来实现实时推理速度,导致性能低下.本文提出了一种新的双边分割网络(BiSeNet)来解决这一难题.我们首先 ...
- Asp.Net Core Cookie使用,Asp.net Core Cookie操作失效
注:本文主要介绍Asp.net Core 3.0后增加cookie代理功能. 默认是增加了的. 默认增加的这个有些问题所在, 1.原来设置cookie方式将不可用,需要按照代理方式设置 2.对于ses ...
- Research Guide: Pruning Techniques for Neural Networks
Research Guide: Pruning Techniques for Neural Networks 2019-11-15 20:16:54 Original: https://heartbe ...
- JVM探究之 —— 垃圾回收(一)
垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和 ...
- Chrome提示:"请停用以开发者模式运行的扩展程序"的解决办法
操作步骤 1.开始 -> 运行 -> 输入gpedit.msc -> 回车确定打开计算机本地组策略编辑器(通过Win + R快捷键可以快速打开运行),如图所示: 2.在打开的本地组策 ...
- SonarQube代码评审工具简介
SonarQube是一个代码评审工具,可以完成对多种类型代码的扫描,并生成报告.本文是一个简单的扫描Java代码的使用说明. 该工具主要分为两个部分: 服务端:用来保存和展示扫描结果. 客户端:或者说 ...
- mysql插入数据报错IntegrityError: (1062, "Duplicate entry 'xx' for key 'xxxxx'")
1.问题描述 MySQL插入数据的时候报错,提示如下: IntegrityError: (1062, "Duplicate entry 'xx' for key 'xxxxx'") ...
- SpringBoot配置热部署
1.spring-boot-devtools 在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</gr ...
- WEBSHELL-恶意代码检测
静态查杀 提取特征写成规则库,调用规则库查杀.基于规则,会比较快,但漏报.误报会比较明显,一般的Webshell一句话木马变形混淆会比较多. yara规则 $eval = /(<\?php|[; ...
- linux用户态和内核态理解
1.特权级 Intel x86架构的cpu一共有0-4四个特权级,0级最高,3级最低,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查.硬件已经提供了一套特权级使用的相关机制 ...