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 ...
随机推荐
- CMake简易入门
使用CMake编译 CMake工具用于生成Makefile文件.用户通过编写CMakeLists.txt文件,描述构建过程(编译.连接.测试.打包),之后通过解析该文件,生成目标平台的Makefile ...
- FEC之我见一
顾名思义,FEC前向纠错,根据收到的包进行计算获取丢掉的包,而和大神沟通的结果就是 纠错神髓:收到的媒体包+冗余包 >= 原始媒体包数据 直到满足 收到的媒体包+ 冗余包 >= 原始媒 ...
- [转]两种高性能I/O设计模式(Reactor/Proactor)的比较
[原文地址:http://www.cppblog.com/pansunyou/archive/2011/01/26/io_design_patterns.html] 综述 这篇文章探讨并比较两种用于T ...
- js之__proto__原型链
可参考: http://blog.csdn.net/irelandken/article/details/7297490
- spring IOC 注解@Resource
1.@Resource(重要)a)加入 :j2ee/common-annotations.jar b)默认按名称,名称找不到,按类型 默认按照名称setName1到xml中找和id相同的,没有的话再找 ...
- Poj1050_To the Max(二维数组最大字段和)
一.Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is an ...
- Python-RabbitMQ消息队列的发布与订阅
RabbitMQ消息队列的发布与订阅类似于广播,一端发送消息,多个客户端可以同时接收到消息 fanout:所有绑定到exchange的queue都可以接收消息 消息发布端 # -*- coding:u ...
- day01_虚拟机与主机之间ip配置
虚拟机1: centos_ node1 虚拟机2:centos_node2 宿主主机虚拟机ip配置: vmnet1 来自为知笔记(Wiz)
- 25、转录本(transcript)组成(gtf文件的第三列)
转录本(transcript)长度范围 到 --3216021---- 3UTR stop_codon CDS3 ...
- 【PHP】composer 常用命令