码迷,mamicode.com
首页 > 编程语言 > 详细

八 Django框架,模板语言

时间:2018-01-03 13:58:40      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:复制   应用   组合   产品   母版   自定义函数   meta   ref   动态   

模板语言就是可以将动态数据在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框架,模板语言

标签:复制   应用   组合   产品   母版   自定义函数   meta   ref   动态   

原文地址:https://www.cnblogs.com/meng-wei-zhi/p/8183112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!