第三百一十节,Django框架,模板语言

模板语言就是可以将动态数据在html模板渲染的语言

一、接收值渲染

locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染

{{...}}接收一个变量或者值进行渲染

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = '叫卖录音网' return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{ a }}</h1>
</body>
</html>

二、接收值,运行代码块

for循环

{% for item in item_list %}

 <a>{{ item }}</a>

  forloop.counter  计数器,记录循环次数
  forloop.first      判断是否是循环第一次,返回布尔值    
  forloop.last    判断是否是循环最后一次,返回布尔值 

 {% endfor %}

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
<li>{{ i }}</li>
{{ forloop.counter }}
{{ forloop.first }}
{{ forloop.last }}
{% endfor %}
</ul>
</body>
</html>

if判断

{% if ordered_warranty %}  

{% else %}

{% endif %}

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
{% if i == '首页' %}
<li style="color: #ee1215">{{ i }}</li>
{% elif i == '产品展示' %}
<li style="color: #1b47ee">{{ i }}</li>
{% else %}
<li>{{ i }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>

三、母板-子板-母板继承

母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页面返回给浏览器

一般母板里都是写的一个网页里不变的地方,也就是通用的地方,被继承页(访问页)都是每个页面不同的地方,也就是将页面不同的地方引入到母板组合成一个新页面返回浏览器

母板里一般都是网页的、头部、底部、头部底部css、头部底部js

被继承页(访问页)里一般都是新内容,新内容的css和js

母板:{% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块
子板:{% extends "base.html" %} 子板继承母板
   {% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块

逻辑处理 

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): return render(request, 'index.html', locals()) # 打开页面

母板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="/static/css/tou.css">
{% block css %}{% endblock %} #调用子板的css样式
</head>
<body> <div id="tou">头部</div> {% block nei_rong %}{% endblock %} #调用子板的内容区块 <div id="wei">尾部</div>
</body>
</html>

子板(访问页)

{% extends "tou.html" %}  #继承母板

{% block css %}       #设置母版调用css样式区块
<link rel="stylesheet" type="text/css" href="/static/css/index.css">
{% endblock %} {% block nei_rong %}    #设置母版调用字板内容区块
<div id="neir">内容</div>
{% endblock %}

四、帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}    格式化时间
{{ bio|truncatewords:"30" }}            只显示指定字数
{{ my_list|first|upper }}                首字母大写
{{ name|lower }}                       首字母小写

五、自定义html模板可调用函数模块

a、在app应用中创建templatetags目录

b、在目录中创建任意 .py 文件,如:xx.py

在py文件里设置html可调用函数,注意py文件里有几个注意点如下:

#!/usr/bin/env python
# coding:utf-8
from django import template              #必须导入这个模块
from django.utils.safestring import mark_safe #必须导入这个模块 register = template.Library()   #固定格式必须设置这个变量   @register.simple_tag #自定义函数必须用上这个装饰器,html页面才可以调用
def my_simple_time(v1, v2, v3): #自定义函数
return v1 + v2 + v3 @register.simple_tag
def my_input(id, arg):
result = "<input type='text' id='%s' class='%s' />" % (id, arg,)
return mark_safe(result)

c、在使用自定义函数的html文件中导入自定义函数模块 xx.py 文件名
{% load 自定义函数模块名称 %}

d、html页面使用
{% 函数名称 参数 参数 参数 %}

{% load mbanyuyan %}  #导入自定义函数模块
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% my_simple_time 1 2 3 %} #传参并且执行自定义函数 </body>
</html>

注意:使用自定义html函数,必须在全局配置文件settings.py里的INSTALLED_APPS注册了app应用

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
)

 

第三百一十节,Django框架,模板语言的更多相关文章

  1. 第三百一十二节,Django框架,Cookie

    第三百一十二节,Django框架,Cookie 注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: ke ...

  2. 第三百一十四节,Django框架,自定义分页

    第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...

  3. 第三百一十九节,Django框架,文件上传

    第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...

  4. 第三百一十六节,Django框架,中间件

    第三百一十六节,Django框架,中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间 ...

  5. 第三百一十五节,Django框架,CSRF跨站请求伪造

    第三百一十五节,Django框架,CSRF跨站请求伪造  全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...

  6. 第三百一十八节,Django框架,信号

    第三百一十八节,Django框架,信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 也就是当程序有指定动作时, ...

  7. 第三百一十七节,Django框架,缓存

    第三百一十七节,Django框架,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返 ...

  8. 第三百一十三节,Django框架,Session

    第三百一十三节,Django框架,Session Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 1.数据库(默认)2.缓存3.文件4.缓存+数据库5.加密c ...

  9. 第三百一十一节,Django框架,Form表单验证

    第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...

随机推荐

  1. webpack-dev-server的自动更新配置

    一.背景 测试发布一个项目,修改jsx中的内容,页面不自动更新. 每次必须执行npm run build:然后执行npm run start. 脚本如下: "scripts": { ...

  2. Tomcat7 catalina.out 日志切割

    安装步骤例如以下: 下载(最新版本号)     #  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 假设下载不了,直接网上查找,ftp ...

  3. [转]Microsoft Office 2010、Visio 2010、Project 2010官方中文版+有效激活方法

    本文刊发的Office 2010.Project 2010O.Visio 2010:(1)均为“微软批量授权中心”原版光盘镜像:(2)均提供了32位(x86)和64位(x64)两种版本.为使大家了解各 ...

  4. jenkins 批量修改配置文件

    jenkins 批量修改配置文件   jenkin job 修改配置 修改前配置 <runPostStepsIfResult> <name>FAILURE</name&g ...

  5. 啸叫抑制(howling suppression)

    作者:桂. 时间:2017-05-16 链接:http://www.cnblogs.com/xingshansi/p/6862683.html 前言 下午看到群里讨论有人提到这个问题,记录一下. 一. ...

  6. 如何发布Node模块到NPM社区

    “学骑自行车最快的方式就是先骑上去” 一.安装node和npm 1.一种是通过编译node源文件安装node(注意:需要Python 2.6或2.7已经安装) $ wget http://nodejs ...

  7. Spring事务管理实现方式之编程式事务与声明式事务详解(转)

    原文:https://blog.csdn.net/liaohaojian/article/details/70139151 编程式事务 编码方式实现事务管理(代码演示为JDBC事务管理) Spring ...

  8. springmvc+spring+mybatis+maven项目构建

    1.首先在myeclipse10中安装maven的插件,将插件放入D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropin ...

  9. [na]tcpdump参数应用参考

    详细参数参考,我记得之前有个ppt关于这个写的不错. 说实话,这玩意用的时候直接gg了. 常用应用: 过滤物理口 过滤某个port/ip/mac 过滤协议 显示ip/mac/port不解析等 一 tc ...

  10. CCCallFunc和CCSequence

    class CC_DLL CCCallFunc : public CCActionInstant //<NSCopying> void Issue1305_2::onEnter() { A ...