Django框架—模板的用法

模板调用

1.在项目中的templatles文件夹中创建html文件,例如(index.html文件)
2.在视图views.py中调用:

`def index_hander(request):
    return render(request,'index.html',context)`

模板参数传递

1.在视图文件中定义参数:

def t1_hander(request):
    context={
        'key1':'value1',
        'key2':['value2','value22'],
        'key3':{
            'key3_1':'value3_1',
            'key3_2':'value3_2'
        }
    }
    return render(request,'t1.html',context)


2.在模板文件中接收定义的参数:

    {# 1.普通值获取 #}
    {{ key1 }}
    <br/>
    {# 2.列表值获取 #}
    {{ key2.0 }} {{ key2.1 }}
    <br/>
    {# 3.字典值获取 #}
    {{ key3.key3_1 }} {{ key3.key3_2 }}

就可以在html文件中得到相应的参数值,

模板循环语句

def t2_hander(request):
    context={
        'hobbys':['A','B','C']
    }
    return render(request,'t2.html',context)

在模板中定义参数接收

<body>
{# 循环语句 #}
{% for hobby in hobbys %}
    获取到的值是:{{ hobby }}
    <br/>
{% endfor %}
</body>

模板判断语句

在视图函数中定义:

def t3_hander(request):
    context={
        'message':'这是一个提示信息,根据style来决定颜色',
        'sytle':3,
    }
    return render(request,'t3.html',context)

在模板中定义接收:

<body>
    {% if sytle == 0 %}
        <span style="color: red">{{ message }}</span>
    {% elif sytle == 1 %}
        <span style="color: green">{{ message }}</span>
    {% elif sytle == 2 %}
        <span style="color: blue">{{ message }}</span>
    {% else %}
         <span style="color: black">{{ message }}</span>
    {% endif %}
</body>

获取视图函数的地址

不需要额外传参的视图函数:
{% url “【namespace】:【name】” %}
需要传参的视图函数:
例如:def re_handler(request,num):
… …
{% url “【namespace】:【name】” 【传递的参数】%}

模板过滤器

过滤器:
模板中对传递过来的数据进行修饰,在显示。
过滤器的语法:

关键字 说明
safe 禁止HTML转义
length 长度
datetime 日期 (Y-m-d H:i:s)
default 默认值(变量名
upper 转大写
lower 转小写

说明:
多个过滤器配合:
{{ 变量|过滤器1|过滤器2 }}

代码:
模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器</title>
</head>
<body>
原样输出:
 <ul>
     <li>html_code:{{ html_code }}</li>
     <li>datetime:{{ datetime }}</li>
 </ul>
过滤器输出:(格式:变量|过滤器:参数)
<ul>
    <li>safe禁止转义:{{ html_code | safe }}</li>
    <li>length:{{ html_code | length }}</li>
    <li>date输出日期:{{ datetime | date:'Y-m-d H:i:s' }}</li>
    <li>default默认值:{{ sytle |default:'默认值' }}</li>
    <li>upper转大写:{{ html_code |upper }}</li>
    <li>lower转小写:{{ html_code |lower }}</li>
    <li>多个过滤器:{{ html_code | lower | safe }}</li>
</ul>
</body>
</html>

视图view代码:

import datetime

def t5_hander(request):
    context={
        'html_code':'<a href="https://www.baidu.com">百度一下</a>',
        'datetime':datetime.datetime.now()
    }
    return render(request,'t5.html',context)

模板复用与block提取

  1. 模板继承
    {% extends “【父模板路径】” %}
  2. block块定义与重写
    {% block 【代码块名称】 %}
    … …
    {% endblock %}
    注:调用父模板中的代码:{{ block.supper }}
发布了10 篇原创文章 · 获赞 0 · 访问量 98

猜你喜欢

转载自blog.csdn.net/taochaocaj/article/details/103926454
今日推荐