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. xdebug浏览器调试参数

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

  2. 恢复到特定点(时间点、scn、日志序列号),rman不完全恢复

    将数据库.表空间.数据文件等恢复至恢复备份集保存时间中的任何一个时间点/SCN/日志序列(一般是日志挖掘找到误操作点),但须谨慎,操作前一定需要做好备份,具备条件的情况下最好先恢复到异机,避免业务停机 ...

  3. Parallel Programming-Concurrent Collections

    备忘:asp.net平台下线程安全集合类.   Class Description BlockingCollection<T> Provides blocking and bounding ...

  4. 【转】 Pro Android学习笔记(五十):ActionBar(3):搜索条

    目录(?)[-] ActionBar中的搜索条 通过Menu item上定义search view 进行Searchable的配置 在activity中将search view关联searchable ...

  5. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  6. JavaScript-Tool:jquery.cxselect.js

    ylbtech-JavaScript-Tool:jquery.cxselect.js 1.返回顶部 1.jquery.cxselect.js /*! * jQuery cxSelect * @name ...

  7. paramiko使用1

  8. Ajax的包装

    /** * Created by Administrator on 2016/12/27. *//** * 创建XMLHttpRequest对象 * @param _method 请求方式: post ...

  9. RN控件之DrawerLayoutAndroid导航栏

    /** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; import Rea ...

  10. [cf687c]The Values You Can Make(01背包变形)

    题意:给定n个硬币,每个硬币都有面值,求每个能构成和为k的硬币组合中,任意个数相互求和的总额种类,然后将所有硬币组合中最后得到的结果输出. 解题关键:在01背包的过程中进行dp.dp[i][j]表示组 ...