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、模板继承于引用、静态文件加载)的更多相关文章

  1. Django项目静态文件加载失败问题

    在我们平时的开发过程中,为了方便调试程序,我们都是打开开发者模式,即Debug=True,当我们正式上线的时候肯定就需要把开发者模式关掉,用uwsgi部署上去以后,突然发现我们平时辛苦做的项目的静态文 ...

  2. 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!

    擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...

  3. 当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败的解决办法

    当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败,折腾一段时间终于找到解决办法: 1.先在setting文件增加BASE_DIR(项目的路径) BASE_DI ...

  4. html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

    html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

  5. Django学习:模板继承和配置静态文件

    一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...

  6. Django本地开发,引用静态文件,火狐浏览器不能访问静态文件,谷歌浏览器却能访问静态文件

    查了一下是settings.py设置问题 # Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.1 ...

  7. vue通过ID(参数)修改URL复用同一个页面(组件)不重新加载的问题

    项目中经常会用到同一个页面,结构是相同的,我只是在vue-router中通过添加参数的方式来区分状态,参数可以在页面跳转时带上params,或者query,但是有一个问题,即使我们修改了参数,URL也 ...

  8. 【Bug档案01】Spring Boot的控制器+thymeleaf模板 -使用中出现静态资源加载路径不当的问题 -解决时间:3h

    总结 - thymeleaf的模板解析规则不清楚,或者忘了; - 出现bug时,瞎调试, 没有打开NETWORK 进行查看资源的加载情况 - 控制器中的其他代码,可以先注释掉,这样就可以迅速屏蔽掉其他 ...

  9. Django本地开发,debug模式引用静态文件

    debug为true ,不用设置static_root debug 为false ,设置static_root STATIC_ROOT = ( os.path.join(BASE_DIR, 'stat ...

随机推荐

  1. 用nginx搭建http/rtmp/hls协议的MP4/FLV流媒体服务器

    前前后后搭建了两三个星期,终于可以告一段落,nginx实在是有点强大.写一篇笔记来记录一下这个过程中的思路和解决方案. 一.搭建nginx平台: 基本是基于http://blog.csdn.net/x ...

  2. noip退役赛

    上下午 6 题一起考 自闭了 T1 小明要参加一场比赛,赛制给你一个表格 $p$ ,$p_{(i,j)}$ 表示他在第 $i$ 场比赛前如果输了 $j$ 场,他这一场赢的概率,他也可以故意输掉任意多场 ...

  3. xdebug浏览器调试参数

    XDEBUG_SESSION_START=phpstorm-xdebug 找到对应PHP版本的 Xdebug ,后面带 TS 的为线程安全,本机环境为 win7 64 + php-5.5.1-Win3 ...

  4. bzoj 1113 海报pla

    Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值 ...

  5. codevs1020 孪生蜘蛛

    1020 孪生蜘蛛   题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息 ...

  6. 【LeetCode】013. Roman to Integer

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  7. [转]CSS禁止文字选择

    user-select有两个值: none:用户不能选择文本 text:用户可以选择文本 需要注意的是:user-select并不是一个W3C的CSS标准属性,浏览器支持的不完整,需要对每种浏览器进行 ...

  8. BZOJ1113:[POI2008]PLA

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...

  9. 人物-IT-柳传志:柳传志

    ylbtech-人物-IT-柳传志:柳传志 柳传志,英文名:Chuanzhi Liu,男,汉族,中共党员,1944年4月出生于江苏镇江,联想控股股份有限公司董事长,联想集团创始人. 企业家.投资家.全 ...

  10. 第 1 课 Go 简介

    (课程地址: http://study.163.com/course/courseLearn.htm?courseId=306002&from=study#/learn/video?lesso ...