加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Django基础篇--模板和路由分发

发布时间:2020-12-15 17:18:27 所属栏目:大数据 来源:网络整理
导读:Django 模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 ??1)BACKEND: 指定模板的搜索引擎,不用改动 ??2)DIRS: 指定模板存放的目录 ???? DIRS=[‘ in

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读