• python测试开发django-67.templates模板变量取值


    前言

    django 的模板里面变量取值是通过句点语法来取值,就是一个点(.)符号。取值的对象也可以是字符串,int类型,list列表,字典键值对,也可以是一个类的实例对象。

    views视图

    比如我在 views.py 视图函数定义了一些不同类型的变量

    from django.shortcuts import render
    from django.http import HttpResponse
    # Create your views here.
    from django.http import JsonResponse
    from django.shortcuts import render
    
    # 上海悠悠,QQ交流群:750815713
    
    def personalView(request):
        context = {
            "name": "上海-悠悠",
            "n_name": "悠悠",
            "age": 20,
            "fancy": ["python", "django", "pytest"],
            "blog": {
                "url": "https://www.cnblogs.com/yoyoketang/",
                "img": "https://pic.cnblogs.com/avatar/1070438/20161126151035.png"
            }
        }
    
        class Myblog():
            def __init__(self):
                self.name = "上海-悠悠"
                self.age = 20
    
            def guanzhu(self):
                return 100
    
            def fensi(self):
                return 1000
        myblog = Myblog()          # 实例
        context["myblog"] = myblog
    
        return render(request, "personal.html", context=context)
    

    templates模板

    在 templates 目录下新建一个 personal.html 模板

    • string 字符串和 int 类型,通过key名称直接取值,如:{{ n_name }}
    • list类型的取值,通过点下班取值,如:{{ fancy.0 }}、{{ fancy.1 }}、{{ fancy.2 }}
    • dict类型的,通过.keyname取值,如:{{ blog.url }}
    • 类的实例对象,属性通过点属性取值,如:{{ myblog.name}}
    • 类的方法,不带参数的方法,通过点方法取值,如:{{ myblog.fensi }}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="referrer" content="no-referrer" />
        <title>Title</title>
    </head>
    <body>
    
    <div>
    <h1 class="display_name">{{ name }}</h1>
    
        <div>
        <p class="text_gray"><span>姓名: </span>{{ n_name }}</p>
        <p class="text_gray"><span>年龄:</span>{{ age }}</p>
        <p class="text_gray"><span>感兴趣的技术:</span>{{ fancy.0 }}、{{ fancy.1 }}、{{ fancy.2 }}</p>
        </div>
    
    </div>
    <h1 class="display_name">通过字典对象取值</h1>
    
    <div>
        <p class="text_gray"><span>博客地址: </span>
        <a href="{{ blog.url }}"> {{ blog.url }} </a>
        </p>
        <p class="text_gray"><span>头像</span>
        <img src="{{ blog.img }}">
        </p>
        </div>
    
    <h1 class="display_name">通过属性、方法取值</h1>
    <p class="text_gray"><span>名称: </span>{{ myblog.name }}</p>
    <p class="text_gray"><span>关注数: </span>{{ myblog.guanzhu }}</p>
    <p class="text_gray"><span>粉丝数:</span>{{ myblog.fensi }}</p>
    </body>
    </html>
    

    显示效果

    最终显示效果如下

  • 相关阅读:
    Ruby系列:玩转闭包(Block,Proc,lambda)
    C# 中where关键字【MSDN】
    web应用程序中慎用static变量
    面向对象的javascript(一)
    原型模式 对象深浅复制
    存储过程:异地备份数据库文件
    正则表达式 [笔记]
    连接Oracle数据库代码
    在Eclipse下搭建Android开发环境教程,HelloWord
    Android开发之旅:环境搭建及HelloWorld
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/11799958.html
Copyright © 2020-2023  润新知