Django 04 模板标签(if、for、url、with、autoeacape、模板继承于引用、静态文件加载)
Django 04 模板标签(if、for、url、with、autoeacape、模板继承于引用、静态文件加载)
一、if、for、url、with、autoescape
urlpatterns = [
path('hello/<name>/',views.hello),
path('hello1', views.hello1,name='hello1'),
path('hello2/<yy>', views.hello2,name='hello2')
] def hello(request,name):
return render(request,'book/index1.html',
context={'name':name,
'ls':['x','y','z'],
'str':'',
'test_test_name':'重命名的对象',
'html':'<h3>皮皮塔可真漂亮</h3>' }) def hello1(request):
return HttpResponse('页面1') def hello2(request,yy):
return HttpResponse('页面2: {}'.format(yy))
if语句
if语句、条件语句:
{% if name == 'python' %}
这是{{ name }}的页面
{% elif name == 'django' %}
这是django的页面
{% else %}
这是错误的页面
{% endif %}
<br>
循环语句:for循环
{% for i in ls %}
{{ i }}
{% endfor %}
<br>
<br>
for语句
for语句:forloop系列的介绍:
{% for i in ls %}
{% if forloop.counter == 1 %}
<li>下标1开始 1,2,3:{{ i }}</li>
{% endif %}
{% if forloop.revcounter == 1 %}
<li>下标3开始 3,2,1:{{ i }}</li>
{% endif %}
{% if forloop.counter0 == 1 %}
<li>下标0开始 0,1,2:{{ i }}</li>
{% endif %}
{% if forloop.revcounter0 == 1 %}
<li>下标2开始 2,1,0:{{ i }}</li>
{% endif %}
{% endfor %}
<br>
{% for i in ls %}
{% if forloop.first %}
<li>第一个迭代{{ i }}</li>
{% endif %}
{% endfor %}
<br>
{% for i in ls %}
{% if forloop.last %}
<li>最后一个迭代{{ i }}</li>
{% endif %}
{% endfor %}
<br>
{% for i in ls %}
{% for j in ls %}
{% if forloop.parentloop.counter == 1 %}
{{ i }}和{{ j }}
{% endif %}
{% endfor %}
{% endfor %}
<br>
{% for i in str %}
str非空
{% empty %}
str空的啊
{% endfor %}
<br>
<br>
url页面跳转
url 页面跳转:
<a href="/book/hello1">跳转吧1</a> <br>
<a href="{% url 'hello1' %}">跳转吧2</a> <br> {# 直接跳转name为hello1的url #}
<a href="{% url 'hello2' 'python' %}">跳转吧3</a> {# 跳转name为hello2的url,并添加变量yy为python #}
<br>
<br>
with重命名
with:重命名 <br>
{% with test_test_name as ttn %} {# 将test_test_name重命名为ttn #}
{{ ttn }}
{% endwith %}
<br>
<br>
aotoeacape
自动化转义:
原始:{{ html }} <br>
过滤器:{{ html|safe }}
标签:
{% autoescape off %}
{{ html }}
{% endautoescape %}
二、模板继承与引用
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}这是默认的题目{% endblock %}</title>
</head>
<body>
固定的内容 <br>
{% block content %}
这是主页
{% endblock %}
</body>
</html>
reference.html 子模板
{% extends 'book/base.html' %} {# 模板继承base.html #} {% block title %} {# 修改title部分 #}
这是reference1的页面
{% endblock %} {% block content %} {# 修改content部分 #}
这是自己的页面 <br>
这是引用过来的: {% include 'book/include.html' %} {# 引用include.html模板 #}
{% endblock %}
include.html 引用模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<body>
皮皮塔18年前18啦
</body>
</html>
#模板继承总结:
#1、模板继承使用extends标签实现,通过block来个子模板开放接口
#2、extends必须是模板第一个出现的标签
#3、子模板的所有内容,必须出现在父模板定义好的block中,否则django不会渲染
#4、如果出现重复代码,就应该考虑使用引用模板
#5、尽可能多的定义block,方便子模板实现更细的需求
#6、如果再某个block中,要使用父模板的内容,使用block.super获取
三、静态文件加载
#在项目目录下创建static目录,在该目录下创建三个分别为css,js,image的目录 #在项目settings.py最后一行加上
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
{% load static %} {# 导入static #}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>静态文件引用</title>
</head>
<body>
<link rel="stylesheet" href="{% static 'css/mycss.css' %}"> {# 引入css #}
<br>
<script src="{% static 'js/myjs.js' %}"></script> {# 引入js #}
<br>
<img src="{% static 'image/双向查询.png' %}" alt=""> {# 引入图片 #} </body>
</html>
Django 04 模板标签(if、for、url、with、autoeacape、模板继承于引用、静态文件加载)的更多相关文章
- Django项目静态文件加载失败问题
在我们平时的开发过程中,为了方便调试程序,我们都是打开开发者模式,即Debug=True,当我们正式上线的时候肯定就需要把开发者模式关掉,用uwsgi部署上去以后,突然发现我们平时辛苦做的项目的静态文 ...
- 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!
擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...
- 当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败的解决办法
当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败,折腾一段时间终于找到解决办法: 1.先在setting文件增加BASE_DIR(项目的路径) BASE_DI ...
- html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件
- Django学习:模板继承和配置静态文件
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
- Django本地开发,引用静态文件,火狐浏览器不能访问静态文件,谷歌浏览器却能访问静态文件
查了一下是settings.py设置问题 # Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.1 ...
- vue通过ID(参数)修改URL复用同一个页面(组件)不重新加载的问题
项目中经常会用到同一个页面,结构是相同的,我只是在vue-router中通过添加参数的方式来区分状态,参数可以在页面跳转时带上params,或者query,但是有一个问题,即使我们修改了参数,URL也 ...
- 【Bug档案01】Spring Boot的控制器+thymeleaf模板 -使用中出现静态资源加载路径不当的问题 -解决时间:3h
总结 - thymeleaf的模板解析规则不清楚,或者忘了; - 出现bug时,瞎调试, 没有打开NETWORK 进行查看资源的加载情况 - 控制器中的其他代码,可以先注释掉,这样就可以迅速屏蔽掉其他 ...
- Django本地开发,debug模式引用静态文件
debug为true ,不用设置static_root debug 为false ,设置static_root STATIC_ROOT = ( os.path.join(BASE_DIR, 'stat ...
随机推荐
- mysql编码
Mysql中文乱码问题完美解决方案 修改查看MYSQL字符集(charset) MySQL 乱码之我见 10分钟学会理解和解决MySQL乱码问题 /etc/mysql/my.cnf /etc/init ...
- DC/DC尖峰脉冲吸收电路
在DC/DC转换器中,脉冲问题直接影响到产品的EMI和电源噪声,需要在某些时候加尖峰脉冲吸收电路. 从上图可以看到,尖峰脉冲吸收电路就是一个RC吸收电路.至于在DC/DC哪里加RC吸收电路,这里有一个 ...
- Ubuntu下locale文件
March 7, 2015 11:44 PM locale文件 关于locale文件的设定 locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或 ...
- bzoj 2093 [Poi2010]Frog——滑动窗口
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2093 找第k近的可以用一个含k个元素的滑动窗口来实现. 卡空间也还行,但卡时间.不要预处理倍 ...
- 前端框架:template
ylbtech-前端框架: 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://ylbtech.cn ...
- oracle--分页过程demo1
oracle分页过程demo1: --ROWNUM用法 select o.*,rownum rn from (select * from emp) o where rownum<=10; sel ...
- C#调用ODBC连接SQL Server数据库的存储过程
OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd= ...
- <table>的使用以及确定取消按钮的设置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mongodb 操作数据库
1.使用和创建数据库: use mydb //没有就创建 2.显示数据库 show dbs 3.显示数据库状态 db.stats() 4.检查当前所用的数据库 db 5.删除数据库(先用然后删除) u ...
- Python中使用json.loads解码字符串时出错:ValueError: Expecting property name: line 1 column 1 (char 1)
解决办法,json数据只能用双引号,而不能用单引号