Django——3 模板路径 模板变量 常用过滤器 静态文件的使用
Django
模板的路径,有两种方法来使用
- 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明
在每一个APP中创建templates,然后在settings的INSTALLED_APPS中声明
模板变量的使用
- 语法: {{ 变量名 }}
- 命名由字母和数字以及下划线组成,不能有空格和标点符号
- 可以使用字典、模型、方法、函数、列表
- 不要和python或django关键字重名
- 变量和查找
- 注:
1.如果data是一个字典,那么访问data.items将会访问data这个字典的key名为items的值,而不会访问字典的items方法。
2.点在模板渲染时有特殊的含义。 变量名中点表示查找。
配置好templates,url,
views.py:
# 模板变量
def str_con():
return 'hello Django!'
class test():
def __init__(self, name, age):
self.name = name
self.age = age def who_are_you(self):
return 'your name is %s'%self.name + ' and you are %s years old'%self.age lei = test('Tom', '')
string = "I don't like you!"
li = ['a', 'b', 'c']
tup = ('apple', 'pear', 'fuck')
di = {'name': 'Lucy', 'age': ''} def template_variables(request): # 模板变量以及过滤器示例
return render(request, 'book/Template_variables.html', context={
'no': str_con,
'lei': lei,
'string': string,
'list':li,
'tuple': tup,
'dict': di,
'way': lei.who_are_you,
'tags': '<b><i>Django<i></b>',
'ss': 'Django',
'now':datetime.datetime.now,
'num1': 1,
'num2': 2,
'test': 'Hello Django!',
'html': '<h1>HELLO django</h1>',
})
templates中的html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板变量</title>
<style>
</style>
</head>
<body>
<p>方法名:{{ no }} == 调用了方法</p>
<p>类名:{{ lei }}</p>
<p>字符串:{{ string }}</p>
<p>列表:{{ list }}以及列表第二个值:{{ list.1 }} || 从0开始索引</p>
<p>元组{{ tuple }}以及元组第二个值{{ tuple.1 }}</p>
<p>字典:{{ dict }}</p>
<p>字典获取元素(name):{{ dict.name }}</p>
<p>字典取所有值:{{ dict.items }}</p>
<p>示例调用方法:{{ way }}</p></body>
</html>
过滤器
- 作用:对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。
- 语法:{{ fruits | lower }}
- 管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。
- 语法:{{ fruits | lower | capfirst }}
- 使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,
- 语法如下: {{fruits|cut:" "}}
- 注意:使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。
常用的过滤器:
示例:配置好url以及views(还是上面的views)后
html中:
<p>过滤器</p>
<p>相同的类型相加:{{ num1|add:num2 }}</p>
<p>没有的默认设置:{{ xxx|default:'ookk' }}</p>
<p>列表第一个元素:{{ list|first }}</p>
<p>列表最后一个元素:{{ list|last }}</p>
<p>字符串拼接join:{{ list|join:'*' }}</p>
<p>返回序列长度:{{ tuple|length }}</p>
<p>判断列表长度是不是3?{{ list|length_is:3 }}</p>
<p>字符串Hello Django!小写:{{ test|lower }}</p>
<p>字符串首字母大写:{{ test|lower|capfirst }}</p>
<p>按规定省略(...算三个字符):{{ test|truncatechars:8 }}</p>
<p>按单词省略:{{ test|truncatewords:1 }}</p>
<p>HTML标签一同省略的情况:{{ html|truncatechars:8 }}</p>
<p>HTML标签不算的字符的省略{{ html|truncatechars_html:8 }}</p>
<p>HTML省略truncatewords_html方法相同</p>
<p>列表切片:{{ test|slice:'2:6' }}</p>
<p>去掉html标签:{{ html|striptags }}</p>
<p>浮点数格式化(默认小数Π,保留3位):
{{ num3|default:3.1415926|floatformat:3 }}</p>
<p>默认的date日期时间格式:{{ now|date }}</p>
<p>默认的time时间格式:{{ now|time }}</p>
<p>默认的date过滤器24小时制的年月日时间:{{ now|date:'Y-m-d H:i:s' }}</p>
<p>默认的time过滤器12小时制的时间:{{ now|time:'h:i:s' }}</p>
<p>html标签自动转义,{{ tags|safe }}</p>
关于自动转义:
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
- <:转义成<
- >:转义成>
- ‘:转义成'
- “:转义成"
- &:转义成&
静态文件的加载
在大项目的路径下创建文件夹static(与templates同路径)
在settings中设置静态文件路径
在static文件夹中分别配置一些静态文件,再在templates中建一个html用来渲染,配置好路径和视图
static_file.html中:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>静态文件渲染</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<img src="{% static 'image/cat.jpg' %}" alt="网络错误"> <link rel="stylesheet" href="{% static 'css/book.css' %}">
<script src="{% static 'js/book.js'%}"></script>
</body>
</html>
注意:静态文件的使用,在html文件顶上一定要先加上{% load static %}
还有一种方法。可以不用在每个html文件最开始设置{% load static %},只用在settings文件中声明也可以:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
# 将函数内置到模板中 https://docs.djangoproject.com/en/2.1/topics/templates/
'builtins': ['django.templatetags.static'],
},
},
]
Django——3 模板路径 模板变量 常用过滤器 静态文件的使用的更多相关文章
- 潭州课堂25班:Ph201805201 django框架 第三课 模板路径,变量,过滤器,静态文件的引用 (课堂笔记)
第二种方法 首先 'APP_DIRS': True, 将 app 的名字在 INSTALLED_APPS 进行注册 模板变量 传的各种数据类型,和取值 过渡器: 静态文件: 在项目文件目录 中创建 ...
- Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器
目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...
- django项目部署在Apache服务器中,静态文件路径的注意点
django Apache部署静态文件的路径注意点 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEBUG = True 时, ...
- Django框架(六)--模板层:变量、过滤器、标签、自定义标签和过滤器
将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def c ...
- Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件
模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...
- TP框架的模板路径问题以及常用的模板常量的定义
在TP框架中,为了各个模块加载静态文件方便,往往是不需要按照默认的方式放置静态文件到/app/模块名/VIEWS/下面,而是在顶级目录下创建一个新的目录(比如说./tpl目录下),来存放静态文件 ...
- Django day07 (一) 模板的导入 母板的继承 静态文件配置
一:模板的导入 -写一个模板 {% include '模板的名字' %} 二:母板的继承 -写一个母版(可以留多个盒子) {% block 名字 %} / {% endblock %} 三:静态文件配 ...
- django-3-模板变量,过滤器,静态文件的引用
<<<模板变量>>> (1)定义视图函数 通过context传递参数来渲染模板,context要是个字典 当模板变量为可调用对象的时候,函数不传递参数 (2)配置模 ...
- Django中的tags,母版和继承,组件,静态文件相关,自定义simpletag和自定义inclusion_tag
Tags for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} &l ...
随机推荐
- Silverlight 2学习笔记一:初识Silverlight
Silverlight,问世至今已有好一段时日了,向来只是只闻其名,不知其实,今天终于对Silverlight有了点初步的了解. 一.Silverlight是什么?Sliverlight是基于.NET ...
- 【HDU 1007】 Quoit Design
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1007 [算法] 答案为平面最近点对距离除以2 [代码] #include <algorith ...
- python lambda表达式&map/filter/reduce
习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1: name = 'wupeiqi' else ...
- 织梦dedecms标签大全总结
织梦dedecms标签大全总结,同时还建议多参考dede默认模板,织梦默认模板上的标签还是很有参考价值的. dedecms系统参数全局标签,在后台系统设置里可以看到这个参数 网站名称:{dede:gl ...
- [Swift通天遁地]五、高级扩展-(2)扩展集合类型
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 微信小程序上传多张图片,及php后台处理
微信小程序上传多张图片,级小程序页面布局直接来代码index.wxml <view class='body' style='width:{{windowWidth}}px;height:{{wi ...
- ASP.NET MVC5 之数据迁移
SQL 中新建数据库 DataSystem 1.web.config 数据库连接字符串: <add name="APPDataConnection" connectionSt ...
- Laravel (5.5.33) 加载过程(二)
本次说明代码 /* |-------------------------------------------------------------------------- | Turn On The ...
- python框架之Flask基础篇(一)
一.第一个hello world程序 # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def ...
- no斜体 背景图片坐标
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...