一.模板变量

我们登录页面后,在页面上会显示姓名等信息,姓名就是模板变量,用来显示登陆者的名字,Django对这些数据进行处理后,返回给前端页面,前端页面进行渲染。

1.模板变量语法规则

1)在html文件中的引用语法: {{变量名}}

2)命名由字母和数字以及下划线组成,不能有空格和标点符号,不能以数字和下划线开头

3)可以使用字典、模型、方法、函数、列表

4)不要和python或django关键字重名

5)变量和查找

2.模板变量解析规则

(1)计算变量,将其替换成结果

(2)遇到点"."时,按以下顺序查找:

  1).自定义的字典键查找

  2).如果字典没这个值,则到字典的属性或者方法查找

  3).数字索引查找

(3)如果结果是可调用的,则调用它时不带参数

3.模板变量的使用

Django通过参数"context"对模板变量进行上下文传递,模板变量可以是数值、字符串、列表,也可以是字典、函数以及类

在student/views.py中定义视图函数

def func():
return '我是一个函数'
class Animal(object):
def __init__(self, name):
self.name = name
def way(self):
return '我是一个类方法'
dog = Animal('小狗')
value = 2 + 3
str ="Hello World, I like python"
ls = [1, 2, 3, 4, 5]
dt = [dt={'name':'xinlan', 'age':'18', 'items':'abc'}] from django.shortcuts import render
def index(request):
return render(request, 'student/index.html', context={
'func':func,
'Animal':dog,
'value':value,
'str':str,
'ls':ls,
'dt':dt
})

templates/student/index.html模板文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset= "utf-8">
</head>
<body>
这个变量是函数对象:{{func}}<br>
这个变量是类对象:{{Animal}} <br>
这个变量是类对象属性:{{Animal.name}} <br>
这个变量是类对象方法:{{Animal.way}} <br>
这个变量是整型对象:{{value}}<br>
这个变量是字符串对象:{{str}}<br>
这个变量是列表对象:{{ls}}<br>
这个变量是列表的第一个元素:{{ls.0}}<br>
这个变量是字典对象:{{dt}}<br>
这个变量是字典的items键:{{dt.items}}<br>
</body>
</html>

二.过滤器

过滤器用于模板格式化。很多用户发送信息,他们的格式都不一样,为了显示相同的结果,这时可以在模板中写入同等的过滤器,对内容进行过滤,得出想要的结果。在真正渲染出来之前,过滤器会通过功能(大写变小写、去空格等)处理变量,得出结果后替换原有的变量,从而在页面展示出来。

1.过滤器的使用

1).通过管道符号进行

语法:{{变量|过滤器1|过滤器2|...}}

例如:实现一个功能,先把所有字符变成小写,再把第一个字符转换成大写

语法:{{str|lower|capfirst}}

2)使用参数:过滤器名称后使用冒号":",再加上参数。使用参数时,冒号与参数之间不能有空格

语法:{{变量|过滤器:"参数"}}

例如:把一个字符串中所有空格去掉,则可以使用"cut"过滤器

语法:{{str|cut:" "}}

2.常用过滤器
add                            字符串、数字、列表相加,如果失败,返回空字符串
--------------------------------------------------------------------------------------------------
default 提供一个默认值,当django认为是flase时返回该值,如空字符串、None,区别于
default_if_none,这个只有在变量为None时才使用默认值
--------------------------------------------------------------------------------------------------
first 返回列表的第一个值
last 返回列表的最后一个值
--------------------------------------------------------------------------------------------------
date 格式化日期和时间
time 格式化时间
--------------------------------------------------------------------------------------------------
join 字符串拼接,常用于列表转换成字符串
--------------------------------------------------------------------------------------------------
length 返回字符串或者数组的长度,返回0则表示变量未定义
length_is 判断字符串或者数组的长度是否为指定的值
---------------------------------------------------------------------------------------------------
upper 字符串转换成大写
lower 字符串转换成小写
---------------------------------------------------------------------------------------------------
truncatechars 根据后面给的参数截断字符,如果超过了用"..."表示,有标签会包含标签
truncatewords 同truncatechars,以一个单词为单位进行截断
# 以上两个有XXX_html类型,针对html,截断标签中的字符,而不会截断标签
---------------------------------------------------------------------------------------------------
title 标题化,把每个单词首字母大写
capfirst 字符串首字母大写
---------------------------------------------------------------------------------------------------
slice 切割列表,下标从0开始,区间是左闭右开,涉及多个参数
---------------------------------------------------------------------------------------------------
striptags 去掉所有html标签
safe 关闭变量的自动转义,例如让标签起作用
---------------------------------------------------------------------------------------------------
floatformat 浮点数格式化



3.date和time过滤格式

Y       四位数的年,如:1999

y       两位数的年,如:99

m      两位数的月,如:01,09

n       一位数的月,如:1,9

d       两位数的日,如:01, 02

j       一位数的日,如:1, 2

g       12小时制的一位数的小时,如:1, 9, 12

G       24小时制的一位数的小时,如:0, 8, 10, 23

h       12小时制的两位数的小时,如:01, 09, 12

H       24小时值的两位数的小时,如:00, 08, 10, 23

i        分钟,从00~59

s        秒钟,从00~59

例如,格式化当前时间:

{{now|date:"Y年m月n日 H时i分s秒"}}

三.静态文件

图片文件,css文件,JS文件统称为静态文件 。 在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等。在项目目录下创建static目录,为了区分各种类型的文件分别创建css、image、JS的目录,用于存放对应的静态文件

1.静态文件的配置

在项目目录下新建'static'文件夹,在settings.py文件中添加"STATICFILES_DIRS"设置静态文件目录路径,同tamplates

STATIC_URL = "static"

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
2.静态文件的创建

可以在static文件夹下创建APP文件夹后再创建静态文件,新建后记得要上传

1)创建CSS文件:static/css/mystyle.css,输入css样式

body{
blackground:skyblue
}

2)创建JS文件:static/css/myjs.js,输入js行为

alter("这是一个Django项目")

3)image文件夹,存放图片

3.静态文件的引入

创建模板 :/tamplates/student/static_test.html

{% load ststic %}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>静态文件引入</title>
<link rel="stylesheet" href="{% static "css/mystyle.css"}">
</head>
<body>
<script src="{% static "js/myjs.js"}></script>
<img src="{% static "img/myimg.png"}>
</body>
</html>

Django入门--模板变量、过滤器及静态文件的更多相关文章

  1. Django学习:模板继承和配置静态文件

    一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...

  2. Django使用模板后无法找到静态资源文件

    Django使用模板后无法找到静态资源文件 环境配置 Django版本1.11 python版本3.6.2 前言 在编写Django网站的时候,在涉及模板方面,一些简单的例子都没有问题,但这些例子都有 ...

  3. Django模板之模板变量过滤器

    在Django的模板语言中,通过使用 过滤器 来改变变量的显示:Django的模板语言中提供了大约六十个内置过滤器. 过滤器规则: ·         过滤器的语法: {{ value|filter_ ...

  4. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  5. django 简易博客开发 3 静态文件、from 应用与自定义

    首先还是贴一下源代码地址  https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...

  6. 第一个Django应用 - 第六部分:静态文件

    前面我们编写了一个经过测试的投票应用,现在让我们给它添加一张样式表和一张背景图片. 除了由服务器生成的HTML文件外,WEB应用一般需要提供一些其它的必要文件,比如图片文件.JavaScript脚本和 ...

  7. python的Web框架,Django模板变量,过滤器和静态文件引入

    HTML模板的路径查找 在setting中设置查找路径: #默认的查找在此处填写,优先级最高,为在manage.py的同级路径中,添加(常规是template)文件夹,在(template)文件夹中配 ...

  8. Django模板变量,过滤器和静态文件引用

    模版路径查找 首先去settings.py里面找TEMPLATES ,在TEMPLATES下面找DIRS,找到就返回,没找到就继续往下,如果APP_DIRS设置为为Ture,那么就会到上面 INSTA ...

  9. Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件

    模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...

随机推荐

  1. HTML【2】表单提交与服务层的模拟(具体解释get与post提交方式的不同)

    在HTML[1]中已经说明了HTML编程的基本方式,最后说到了表单提交的方式有get和post方式.那么究竟什么是get/post 方式呢,两者有什么差别?如今我就详细的介绍一下. 首先回想一下表单的 ...

  2. Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数

    Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数 学习了:http://www.importnew.com/14958.html 膜拜一下 源码膜拜: Threa ...

  3. swift 笔记 (十四) —— 构造过程

    构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们一般会定义一个方法来完毕,这种方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作 ...

  4. Android自己定义控件之轮播图控件

    背景 近期要做一个轮播图的效果.网上看了几篇文章.基本上都能找到实现,效果还挺不错,可是在写的时候感觉每次都要单独去又一次在Activity里写一堆代码.于是自己封装了一下.这里仅仅是做了下封装成一个 ...

  5. STM32学习之路-LCD(4)&lt;显示字符&gt;

    昨晚疯狂的打了一夜的LOL,感觉L多了,今天一天精神萎靡.还是继续把显示字符给看了,可是在犹豫要不要写这篇文章 事实上写的东西也就是copy别人家的代码,不想写那么多,就记录下自己困惑的地方吧.也许改 ...

  6. hdu4861 Couple doubi---2014 Multi-University Training Contest 1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861 Couple doubi Time Limit: 2000/1000 MS (Java/Othe ...

  7. C++中sort()及qsort() (不完整介绍)

    在平时刷算法题和oj的时候,排序算法是最经常用到的算法之一:且在各类算法书的目录中 也通常是将各种排序算法放在最前面来讲,可见排序算法的重要性.可能许多人都在算法书中有学过冒泡.快速排序的方法,也都大 ...

  8. PbootCMS V1.1.4 正式发布

    PbootCMS V1.1.4 正式发布 PbootCMS V1.1.4 build 2018-06-251.修复自定义表单表名重复仍然添加成功问题:2.修复分享到微信导致页面错误的问题:3.修复静态 ...

  9. 问题2-:Syntax error on tokens, delete these tokens

    出现原因:拷贝下来的代码缺少{左大括号 然后运行时run as 没有选到java application 是因为没有main方法 加个public static void main(String() ...

  10. Windows下Vim主题变更

    默认的好丑! 主题位置. 修改配置文件. 添加主题设置. 新的主题,很高端大气. set fileencodings=utf8,ucs-bom,cp936,big set fileencoding=u ...