Django(10)-模板层的变量和标签

Django(1)-简介

Django(2)-创建项目及默认项目目录结构介绍

Django(3)-配置文件详解

Django(4)-URL和视图

Django(5)-路由配置实例

Django(6)-请求及响应

Django(7)-Get请求和Post请求

Django(8)-设计模式

Django(9)-模板层简介与入门实例

Django(10)-模板层的变量和标签

Django(11)-模板层的过滤器和继承

Django(12)-url反向解析

Django(13)-静态文件

Django(14)-应用及分布式路由

Django(15)-模型层及ORM介绍

Django(16)-ORM基础字段及选项

Django(17)-ORM创建数据

Django(18)-ORM常用的查询函数详解及实例演示

Django(19)-ORM条件查询

Django(20)-ORM更新操作及实例演示

Django(21)-ORM删除操作及实例演示

Django(22)-ORM中F对象和Q对象

Django(23)-ORM聚合查询和原生数据库操作

Django(24)-admin后台管理设置步骤以及常见样式详解

Django实战技巧(1)-开发测试生产环境配置切换处理技巧

Django实战技巧(2)-git代码仓分支管理技巧

Django实战技巧(3)-项目配置

1、模板的变量

能传递到模板中的数据类型

  • str
  • int
  • list
  • tuple
  • dict
  • unc
  • obj

在模板中使用的变量语法

  • {{变量名}}
  • {{变量名.index}}
  • {{变量名.key}}
  • {{对象.方法}}
  • {{函数名}}

实例:
设置路由如下:
在这里插入图片描述
视图函数如下:

from django.shortcuts import render

def say_hello():
    return "I can say hello."

class Dog():
    age=4
    color='black'
    def say(self):
        return "wang wang wang"

def test_html(request):
    dic={}
    dic['int']=100
    dic['str']='hello world'
    dic['lst']=["Tom","Jack","Hellen"]
    dic["dict"]={
        "a":1,
        "b":2
    }
    dic['func']=say_hello
    dic["dog"]=Dog()
    return render(request,"test_html.html",dic)

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>整数:{{int}}</h3>
    <h3>字符串:{{str}}</h3>
    <h3>列表第一个元素:{{lst.0}},第二个元素:{{lst.1}},第三个元素:{{lst.2}}</h3>
    <h3>字典:{{dict}}</h3>
    <h3>字典中a元素:{{dict.a}},字典中的b元素:{{dict.b}}</h3>
    <h3>函数:{{func}}</h3>
    <h3>狗对象:{{dog}}</h3>
    <h3>狗的颜色:{{dog.color}}</h3>
    <h3>狗的年龄:{{dog.age}}</h3>
    <h3>狗叫:{{dog.say}}</h3>
</body>
</html>

在浏览器打开 http://127.0.0.1:8080/test_html,结果如下:
在这里插入图片描述

2、模板层标签

  • 作用:将一些服务器端的功能嵌入到模板中,例如流程控制等
  • if 标签语法:
{% if 条件表达式1 %}
...
{% elif 条件表达式2 %}
...
{% elif 条件表达式3 %}
...
{% end %}
...
{% endif %}

实例1 :
设计如下路由:
在这里插入图片描述
编写如下视图函数:

from django.shortcuts import render

def test_if(request):
    dic={
        "x":10
    }

    return render(request,"test_html.html",dic)

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% if x > 5 %}
        x 大于 5
    {% else %}
        x 小于等于 5
    {% endif %}
</body>
</html>

在浏览器打开http://127.0.0.1:8080/test_if,结果如下;
在这里插入图片描述
实例2:在线计算器
设计路由如下
在这里插入图片描述
视图函数实现如下:注意,这里locals的方法就是将当前的局部变量自动收集为一个字典数据,这样就不需要刻意去构造字典数据了

from django.shortcuts import render

def test_compute(request):
    if request.method=="GET":
        return render(request,"computer.html")
    elif request.method=="POST":
        x=int(request.POST["x"])
        y=int(request.POST["y"])
        op=request.POST["op"]

        result = 0
        if op=="add":
            result=x+y
        elif op=="sub":
            result=x-y
        elif op=="mul":
            result=x*y
        elif op=="div":
            result=x/y
        return render(request,"computer.html",locals())

在templates目录下创建compute.html文件,如下:注意,这里在设置运算符的的时候时用力一个if语句,如此即可以做到当在页面点击的时候能够记住我们已经选择的运算符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>在线简易计算器</title>
</head>
<body>
<form action="/compute" method="post">
    <input type="text" name="x" value="{{x}}">
    <select name="op">
        <option value="add" {% if op == 'add' %} selected {% endif %}>+</option>
        <option value="sub" {% if op == 'sub' %} selected {% endif %}>-</option>
        <option value="mul" {% if op == 'mul' %} selected {% endif %}>*</option>
        <option value="div" {% if op == 'div' %} selected {% endif %}>/</option>
    </select>
    <input type="text" name="y" value="{{y}}"> =
    <span>{{result}}</span>
    <div>
        <input type="submit" value="开始计算">
    </div>
</form>
</body>
</html>

在浏览器打开http://127.0.0.1:8080/compute
然后分别通过设置两个数和切换运算符来进行计算了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • for 标签
{% for item in 迭代对象%}
   ...循环语句
{% empty %}
   ... 可迭代对象无数据时填充的语句
{% endfor %}
  • for标签的内置变量
    • forloop.counter:循环的当前迭代从1开始索引
    • forloop.counter0:循环的当前迭代从0开始索引
    • forloop.revcounter:counter值的倒序
    • forloop.revcounter0:conter0值的倒序
    • forloop.first:如果这是第一次通过循环,则为真
    • forloop.last:如果这是最后一次循环,则为真
    • forloop.parentloop:嵌套循环,表示外层循环

实例:
设计路由如下:
在这里插入图片描述
视图函数实现如下:

from django.shortcuts import render

def test_for(request):

    lst=["Tom","Jack","Hellen"]

    return render(request,"test_html.html",locals())

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test_for</title>
</head>
<body>
{% for name in lst %}
{% if forloop.first %}*******************************{% endif %}
<p> {{forloop.counter}}.{{name}}</p>
{% if forloop.last %}################################{% endif %}
{% empty %}
当前没有数据
{% endfor %}
</body>
</html>

在浏览器中打开http://127.0.0.1:8080/test_for,结果如下:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redrose2100

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值