八 Django框架,模板语言

Posted 快乐糖果屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八 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框架,模板语言的主要内容,如果未能解决你的问题,请参考以下文章

Django框架之模板

Django框架4

Django中的模板语言

Django中模板总结[模板语言,模板继承,CSRF攻击,反向解析]

Django入门学习--深入模板(templates)

Django入门学习--深入模板(templates)