Python全栈 Web(Django框架、模板)
1.Django中的模板(Templates)
1.什么是模板
模板就是要动态呈现给用户的网页
模板的本质就是网页- 前后端,动静结合的网页
Django的模板引擎是由Django自己提供的,并不是Jinja2,
所以Django的模板语法与Flask(Jinja2)的语法会有一些不同
2.模板的设置
在 settings.py 中 有一个 TEMPLATES 变量
1.BACKEND:指定使用的模板的引擎
2.DIRS :指定模板的存放目录们
1.如果写东西:则按照写好的路径去找模板
2.如果未写东西:那么Django会自动的到每个应用中所有一个叫templates的目录来作为模板的存放目录
3.APP_DIRS : 是否自动搜索应用中的目录
True:表示搜索应用中的 templates 的目录
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ # 静态文件的访问路径 STATIC_URL = '/static/' # 静态文件的存储路径 STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
1.通过 loader 对象获取模板,再通过HttpResponse进行响应
from django.template import loader
def xxViews(request):
#1.通过 loader 加载模板
t = loader.get_template("模板名称")
#2.将模板渲染成字符串
html = t.render()
#3.将字符串通过HttpResponse响应给客户端
return HttpResponse(html)
2.使用 render 直接加载并响应模板
def xxViews(request):
return render(request,'模板的名称')
# Create your views here. def temp_views(request): #1.通过loader加载模板 t=loader.get_template('01-temp.html') #2.将模板渲染成字符串 html=t.render() #3.再通过HttpResponse将字符串响应给浏览器 return HttpResponse(html) # 使用render加载模板 def temp02_views(request): return render(request, '01-temp.html')
4.模板的语法
1.变量
1.作用:将后端的数据传递给模板进行显示
2.在Django中允许作为变量传递给模板的数据类型
字符串,整数,列表,元组,字典,函数,对象
3.变量的语法
变量们必须要封装到字典中才能传递给模板
1.使用 loader 加载模板
dic = {
'变量名1':'值1',
'变量名2':'值2',
}
t = loader.get_template('xxx.html')
html = t.render(locals() 或 dic)
return HttpResponse(html)
2.使用 render 加载并返回模板
dic = {
'变量名1':'值1',
'变量名2':'值2',
}
return render(request,'xx.html',dic)
4.在模板中使用变量
{{变量名}}
# http://localhost:8000/03-var def var_views(request): str = "模板中的变量-字符串" num = 3306 tup = ('谢逊','韦一笑','殷素素','金花婆婆') list = ['孙悟空','猪八戒','沙和尚'] dic = { 'BJ':'北京', 'SZ':'深圳', 'SH':'上海', } say = sayHi() dog = Dog() return render(request,'03-var.html',locals())
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- 取出每个变量进行显示 --> <h3>str:{{ str }}</h3> <h3>num:{{ num }}</h3> <h3>tup:{{ tup }}</h3> <h3>tup[0]:{{ tup.0 }}</h3> <h3>list:{{ list }}</h3> <h3>list[1]:{{ list.1 }}</h3> <h3>dic:{{ dic }}</h3> <h3>dic['SZ']:{{ dic.SZ }}</h3> <h3>say:{{ say }}</h3> <h3>dog.name:{{ dog.name }}</h3> <h3>dog.eat:{{ dog.eat }}</h3> <!-- 宠物名称:{{ dog.name }} --> {% comment "宠物名称" %} 宠物名称:{{ dog.name }} {% endcomment %} </body> </html>
django中不同于jinja2的模板 django的模板中不能使用索引和切片
只能通过·的方式来获取元素 但不影响循环
2.标签
1.作用
将服务器端的功能嵌入到模板中
2.语法
{% 标签内容 %}
3.常用标签
1. comment 标签
2. for 标签
作用:循环遍历 列表,字典,元组
语法:
{% for 变量 in 列表|元组|字典 %}
{% endfor %}
循环中允许使用 forloop 内置变量来获取循环的信息
forloop.counter : 当前循环遍历的次数
forloop.first : 判断是否为第一次循环
forloop.last : 判断是否为最后一次循环
3.if 标签
作用:在模板中完成变量的判断操作
语法:
1. if
{% if 条件 %}
满足条件时要执行的内容
{% endif %}
2. if ... else
{% if 条件 %}
满足条件时要执行的内容
{% else %}
不满足条件时要执行的内容
{% endif %}
3.if ... elif ... else
{% if 条件1 %}
满足条件1时要执行的内容
{% elif 条件2 %}
或满足条件2时要执行的内容
{% elif 条件3 %}
或满足条件3时要执行的内容
{% else %}
或以上条件都不满足时要执行的内容
{% endif %}
<!-- 通过for循环便利tup --> <h1>使用for循环便利tup</h1> {% for t in tup %} <p {% if forloop.first %} style="background:red;" {% elif forloop.last %} style="background:blue;" {% else %} style="background:pink;" {% endif %} > <span>内容:{{ t }}</span> <br> <span>下标:{{ forloop.counter0 }}</span> <br> <span>次数:{{ forloop.counter }}</span> <br> <span>第一次循环:{{ forloop.first }}</span> <br> <span>最后一次循环:{{ forloop.last }}</span> </p> {% endfor %}
<h1>通过for实现的select</h1> <select> {% for t in tup %} <option value="{{ forloop.counter0 }}" {% if forloop.last %} selected {% endif %} >{{ t }}</option> {% endfor %} </select>
3.过滤器
1.什么是过滤器
在变量输出显示之前,对变量进行筛选和过滤
2.过滤器的语法
{{变量|过滤器:参数}}
3.常用过滤器
1.{{value|upper}}
将value变为大写
2.{{value|lower}}
将value变为小写
3.{{value|add:num}}
将num值累加到value之后
4.{{value|floatformat:n}}
将value四舍五入到n位小数
5.{{value|truncatechars:n}}
将value截取保留至n位字符(包含...)
4.静态文件
1.什么是静态文件
在Django中,不被解释器所动态解析的文件就是静态文件
2.Django中静态文件的处理
在settings.py中设置有关静态文件的信息:
1.设置静态文件的访问路径
在浏览器中通过哪个地址能够找到静态文件
STATIC_URL = '/static/'
如果访问路径是 http://localhost:8000/static/...,那么就到静态文件存储路径中找文件而不走路由(urls.py)
2.设置静态文件的存储路径
指定静态文件存储在服务器上的哪个位置处
STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
静态文件目录的存放位置:
1.在项目的根目录处创建一个 static 目录,用于保存静态文件们
2.每个应用中也可以创建一个 static 目录,用于保存静态文件们
3.访问静态文件
1.直接使用静态文件访问路径进行访问
http://localhost:8000/static/..
ex:
<img src="/static/images/a.jpg">
<img src="http://localhost:8000/static/images/a.jpg">
2.使用 {% static %} 访问静态资源
{% static %} 表示的就是静态资源的访问路径
1.在模板的最顶层增加
{% load static %}
2.在使用静态资源时
<img src="{% static 'images/a.jpg'%}">
# http://localhost:8000/04-static def static_views(request): return render(request, '04-static.html')
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- 显示静态资源文件 --> <p> <img src="/static/images/shuaige.jpg"> </p> <p> <img src="http://localhost:8000/static/images/shuaige.jpg"> </p> <p> <img src="{% static 'images/shuaige.jpg' %}"> </p> </body> </html>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
老码农眼中的区块链
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/83111619 大家可能已经听说过比特币、莱特币、以太币等等,以及它们作为一种新货币在市场上的潜力。 有趣的是,很多投资比特币的人也提到了区块链之类的东西。 显然,这项技术是比特币等其他东西的"基础"。 就好像比特币的概念还不够混乱似的,区块链计算显然也可以"应用"到其他行业? 这是如何运作的呢? 通过首先了解区块链计算是什么,才能来开始使用区块链的旅程。 从本质上讲,区块链是一个平台,旨在为一群人提供一种手段,以便在不需要集中系统的数字分类账上创建"交易",但同时仍然是安全和私密的,因为每个人都可以看到每个人计划改变什么,并且同意将交易合法化。 现实生活的基础: 维基百科或百度百科 如果这个概念还是有点难以理解的话,试着把 blockchain 想象成维基百科或谷歌文档。 如果这个概念还是有点难以理解的话,试着把 区块链想象成维基百科或百度百科。 使用区块链,区块链上的成员实际上可以...
- 下一篇
云游戏的架构设计和技术实现
云游戏的架构设计和技术实现 首先简单做个自我介绍。我本人主要是从事游戏行业的,经历比较复杂,早年做 PC 端网游,然后又做了几年虚拟现实,接着又做页游和手游, 现在主要是做 HTML5 游戏。这跟云计算可能有点远,但是我个人对云计算技术很感兴趣,所以业余也会关心这项技术的发展。所以就有了这样一个游戏和云计算相结合的项目,这是我去年跟上海劢驰数字技术有限公司合作的项目,我作为技术顾问参与了这个项目的架构设计和一些核心技术的研发。 什么是云游戏? 云游戏这个概念非常简单,就是我把游戏放到服务器上去运行,把游戏渲染出来的的音视频画面,通过流的形式传送到终端,终端上不再需要安装游戏,各种终端比如说电视、手机、PC、平板都可以运行。这样我们就不需要关心游戏怎么去适配不同的软硬件平台、终端性能够不够等等这些问题。这个概念本身是非常好的,在2009年的时候,这个技术就已经出现了,美国有家叫Onlive 的公司第一个推出云游戏服务,但是他最终在商业上还是失败了,技术最后被索尼公司收购,并运用在PS Now上。云游戏的概念虽然非常好,但里面技术挑战性非常高,有非常多的技术问题需要解决,那个时代可能还比较...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境