python-django-03
python-django-03
1、Django 模板(Template)
1、什么是模板
就是一个网页,可以被view响应给用户
目的是为了解决复杂的显示问题
2、模板的设置
1、BACKEND:指定模板的搜索引擎,不用改动
2、DIRS:指定模板所存放的目录
DIRS=['index.temp','music.temp']
但是,如果DIRS中为空的话,那么django会自动所有每个应用中的 templates 的文件夹作为模板管理目录
推荐:
1、DIRS 保持为空
2、在每个应用中,创建一个 templates 的文件夹
3、APP_DIRS
True:首先从DIRS中指定的文件夹中查找模板,如果没找到指定模板的话,则再搜索templates目录
3、模板的加载方式
1、使用 loader 获取模板,通过HttpResponse进行响应
from django.template import loader
def xxx(request):
t=loader.get_template('show.html')
html=t.render({})
return HttpResponse(html)
练习:
使用loader方式完成下列操作
在 music 应用中,访问
localhost:8000/music/music_info
在模板中显示如下效果:
歌名 :<<小苹果>>
作词 :筷子兄弟
演唱 :筷子兄弟
2、使用 render 直接加载
return render(request,'模板名称',{})
4、url() 的name参数
urlpatterns = [
url(regex,views,kwargs=None,name=None)
]
name : 定义当前url的别名,允许在Template中使用该别名来找到对应的 url
url(regex,views,name=None,name='别名')
在Django模板中使用 name 实现连接
{% url 'name值'%}
练习:
1、通过 localhost:8000/news/first
去往 first.html
在 first.html 中增加一个超链接,连接到 result.html.在超链接中,增加两个参数,分别都是1位以上的数字,在result.html中,将两个数字相加的结果打印输出
5、模板的语法
1、变量
作用:允许将后端的数据传递给模板(html),在模板中,会根据变量的实际值进行显示
在Django中允许传递给模板作为变量的数据类型
数字,字符串,列表,元组,字典,函数,对象
如何传递变量到模板中
1、render
dic = {
'变量1':'值1',
'变量2':'值2',
}
return render(request,'xx.html',dic)
2、loader
dic = {
'变量1':'值1',
'变量2':'值2',
}
t = loader.get_template('xx.html')
html=t.render(dic)
return HttpResponse(html)
在模板中,获取变量的值:
{{变量名}}
2、标签
1、什么是标签
允许嵌套一些服务器端的逻辑运算到模板中。
2、语法
{% ... %}
3、常用标签
1、{%if 条件%} ... {%endif%}
接受 :not , and ,or
但是 :and 和 or 不能同时出现
以下内容当成False处理:
空[]
空()
空{}
数字:0
空字符串
特殊对象:None
2、{%if 条件%} ... {%else%} ... {%endif%}
3、
{%ifequal 值1 值2%} ...{%endifequal%}
{%ifequal 值1 值2%} . {%else%} . {%endifequal%}
4、
{%for 变量 in 列表|元组|字典%}
{%endfor%}
允许使用的内置变量(免声明):
forloop
1、forloop.counter : 记录循环的次数
2、forloop.counter0: 同上,但从0开始
3、forloop.revcounter:记录未被遍历的数量
4、forloop.revcounter0:同上,从0开始
5、forloop.first : 布尔值,标记是否为第一个项目
6、forloop.last : 布尔值,标记是否为最后一个项目
3、过滤器
1、作用
在显示变量之前,允许对数据进行筛选或改变
2、过滤器的语法
{{var|过滤器}}
3、常用过滤器
1、{{var|upper}}
将var的数据变为大写
2、{{var|lower}}
将var的数据变为小写
3、{{var|add:num}}
4、{{var|floatformat:n}}
将var四舍五入到 n 位小数
4、静态文件的处理
1、什么是静态文件
模板中所用到的css,js,image,等一些资源文件都是静态文件
2、Django中静态文件的处理
需要在 settings.py中设置静态文件的访问路径 和 存储路径
1、STATIC_URL
指定静态资源的访问路径
STATIC_URL='/static/'
2、STATICFILES_DIRS
指定在开发阶段所有静态文件所在的根目录
STATICFILES_DIRS=(BASE_DIR,'static')
3、访问静态资源
1、<img src="/static/images/huiyuan.jpg">
2、使用 {%static %}访问静态资源
1、模板的最顶层增加
{%load static%}
2、使用静态资源文件时
<img src="{%static 'images/huiyuan.jpg' %}">
http://localhost:8000/news/first/second.html
<li {%if forloop.first%}{%endif%} >
{{forloop.counter}}:{{h}}
</li>
{%for h in uhobby%}
<li {%if forloop.first%}style='color:red;'{%endif%} >
{{forloop.counter}}:{{h}}
</li>
{%endfor%}