八 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‘,
)

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

时间: 2024-11-07 14:40:05

八 Django框架,模板语言的相关文章

Django之模板语言

Django之模板语言 一 模板的执行 模板的创建过程,对于模板,其实就是读取模板(其中嵌套着模板的标签),然后将Model中获取的数据插入到模板中,最后将信息返回给用户 def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse

讲述了Django框架模板的使用方法

文章来源: 敏而好学论坛 嗨学网www.piaodoo.com 欢迎大家相互学习本文实例讲述了Django框架模板的使用方法.分享给大家供大家参考,具体如下: 创建模板文件夹 在项目下床架一个模板文件夹 在templates下面为了区分是哪一个应用的模板再建一个与应用同名的文件夹. 在setting.py的TEMLATES里配置模板文件的路径 在视图函数里return reder def index(request):#视图函数必须有一个参数 #进行处理,和M和T进行交互... # return

Django 框架+模板

MVC 框架 -- Model View Controller 软件工程中的一种软件架构模式 模型(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点. MTV 框架  -- Model(模型).Template(模板)和View(视图),也就是MTV框架. Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候调用Model和Templ

Django 之 模板语言

一.views.py 的代码 class Person(object): def __init__(self,name,age): self.name = name self.age = age def test(request): ''' 模板语言学习 :param request: :return: ''' name = "kang" #变量 name_list = ["Mingkang", "BearBear", "BenBen&

Django之模板语言(二)-----Filter

1.其他常用的模板语言: 通过模板语言可以让前端页面显示数据,数据可以是基本数据类型,也可以是对象亦或者对象的列表,结合着模板中的for.if等配合使用. 要注意前端页面中,出现没有后端数据的情况,随便写了一个变量,结果在前端页面中不会显示. 怎么让这个随便的变量不随便捏,可以使用defalut默认显示. 如何在模板语言中显示文件的大小? 如何在模板语言中格式化的显示时间? 如何在模板中安全的显示后台传过来的html代码? 如何对于模板语言中不存在的变量可以默认显示? 如何进行切片操作?slic

053.Python前端Django框架模板层

模板层 一 模板语法之变量 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法: {{ var_name }} [[email protected] mysite]# cat app01/urls.py from django.urls import path,re_path from . import views urlpatterns = [ path("test/",views.test1,name="test1"), path("te

py18_06:Django之模板语言

1. 模板变量的命名规则: 同样的是与其他语言一样,使用字母,下划线,数字.区别:其他的不能以数字开头,模板语言是不能以下划线开头 2. 调用变量 {{ }},用双大括号 如果是字段,则用{% %},比如,for循环,if等 模板语言里,还自带有forloop函数,只有我们用循环的时候.这个方法就可以直接调用.因为他是内嵌在模板语言里的.我们可以直接使用 官网地址上,可以了解更多的模板语言的学习. 官网地址:https://docs.djangoproject.com/zh-hans/2.1/

Django框架模板详解

Django模板详解 模板使用 模板基本由两个部分组成,一是HTML代码,二是逻辑控制代码. 逻辑控制的实现又基本由三个部分组成: 1. 变量的使用 {{ person_name }} #使用双大括号来引用变量 2. tag的使用 {% if ordered_warranty %} #使用大括号和百分号的组成来表示使用Django提供的 template tag {% for item in item_list %} <li>{{ item }}</li> {% endfor %}

django常用模板语言

一.变量 django模板接收到从后端传来的参数,放入模板中对应的变量中 #django代码 def info(request): .... return render(request,'info.html',{'key1':vul1,'key2':vul2}) #HTML代码<div>{{ key1 }}</div> <div>{{ key2 }}</div> HTML中变量要与django传递的代码key值相同 原文地址:https://www.cnbl