zoukankan      html  css  js  c++  java
  • 第三百一十节,Django框架,模板语言

    第三百一十节,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',
    )


     

  • 相关阅读:
    颜色,基础光照,材质(一)
    Model, View(Camera), Perspective (3)
    Model, View(Camera), Perspective (2)
    ROS惯导数据发布(Python)
    hector与gmapping总结
    cartographer参数调整
    Ubuntu终端键盘输入采样(python实现)
    Ubuntu蓝牙识别及PyBluez实现蓝牙串口测试
    Unity 代码生成动画控制器
    Unity 定制PlayableAsset在Inspector显示
  • 原文地址:https://www.cnblogs.com/adc8868/p/7173139.html
Copyright © 2011-2022 走看看