Django基础篇--模板和路由分发
Django模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 ??1)BACKEND: 指定模板的搜索引擎,不用改动 ??2)DIRS: 指定模板存放的目录 ???? DIRS=[‘ index.temp’,’music.temp’] ? ???但是,如果DIRS中为空的话,那么django会自动搜索每个应用中的templates的文件夹作为模板的管理目录 ???? 推荐:DIRS保持空,但必须在每个应用中,创建一个templates的文件夹 ?? 3)APP_DIRS ???? True : 首先从DIRS中指定的文件夹中查找模板,如果没有找到指定模板的话,则再搜索templates目录 3. 模板的加载方式 ??HttpResponse() 这是加载字符串的 ?1. 使用loader 获取模板,通过HttpResponse进行响应 ?? 最终返回模板前都是把模板转化为字符串 ?2. 使用render直接加载 ?? return? render (request,’模板名称’,{参数字典}) 4. url()函数的name参数(这个用法是比较灵活的) urlpatterns = [ ?url( regex,views,kwargs =None,name = None) ] name: 定义当前url的别名,允许在Template中使用别名来 例如: urlpatterns = [ ?url( regex,name = ’my’) ] 在超链接中用得很多 需要使用标签 {% url ‘name值’%}??? #服务器解析 去往second 页面 注意:name别名不能重复定义?? url参数 去往show/35地址的页面? #不用别名的条件下写全路由? ?87 %}’ >去往show/87页面 ?#传参数,直接在’别名’ 后加空格加参数 ? 模板语法: 1. 变量 ??作用:允许将后端的数据传递给模板(html),模板中,会根据变量实际值进行显示 ??1)允许传递给变量的数据类型 ?? 数字,字符串,列表,元组,字典,函数,对象(类) (注意:集合不行) ?? 注意:函数一定要返回值 ??2)如何传递变量到模板中 render dict={ ?‘变量1’:’值1’, ‘变量1’:’值1’, } return? render(request,‘xx.html’,dict) 重点: ?? 如果是传列表,元组,字典等,先组织好数据,再把数据放dict中 ?? 例如: dict ={ ?‘l’ :list, ?‘d’ :dict, } 或者用locals()将局部变量组织成字典传入参数,对象除外 ? 3)模板中获取变量的值 ?? {{ 变量名称}}???? ?#字符串 ?? {{变量名称.1}}?? ??#列表/元组 ?? {{变量名称. key}}??? #字典 ?? {{函数名}}??? ?????#函数 ???{{类名.方法名 }}??? #对象 2. 标签 (具体更多标签用法可以看看官方文档) 1)什么是标签? 允许嵌套一些服务器段端的逻辑运算到模板中 而变量只管数值,标签管运算 ?2)语法 ??{% %} 注意:写的过程运算符,变量都必须用空格隔开 常用标签 1. {% if 条件%}?? #条件可以用简单逻辑判断,例如 >? == 等等 ???? {% else? %} ???? {% end if %} 接受not, and ,or 运算 但是 and? 和 ?or不能同时出现 以下内容当做False处理: ?? 空[] ?? 空 () ?? 空{} 数值0 空字符串 None ?{% ifequal? 值1? 值2 %}? ?#判断值1 和值2是否相等,相当于值1 ==值2 ?{% else %} ?{% endifequal %} 2. for标签 ?{% for? 变量 ?in? 列表| 元组 | 字典 %} ?{% endfor%} 允许使用的内置变量(免声明): ?? forloop ? 1. forloop.counter :记录循环次数,从1开始 ??2. forloop.counter0 :同上,从0开始 ??3. forloop.revcounter:记录未被遍历的数量 ??4. forloop.revcounter0 :同上,从0开始 ??5. forloop.first : 布尔值,标记是否是第一个项(通常对第一个、最后一个做一些样式设置) ??6. forloop.first : 布尔值,标记是否是最后一个项 3.过滤器 在显示变量之前,运行对数据进行筛选或改变 语法: {{ var | 过滤器}} 常用过滤器: 1. {{var| upper}} ?将英文字母改写为大写 2. {{var| lower}} ?? 将英文字母改写为小写 常用的过滤器 1. 加法操作 var|add : ‘ num’ first | add: second ??#first 和 second 是两个数字类型的列表 2.对小数进行四舍五入(金融和交系统) ?var | floatformat:num? # num指定保留多少位小数 3. 超长的字符显示省略号(一些字符串显示) value | truncatechars:num? ?#num指定保留的字符数 value | truncatewords: num 也可以用css实现 white-space:nowrap text-overflow:ellipsis (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |