templates模板语法传值

templates模板语法传值

  • {{ }}:变量相关

  • {% %}:逻辑相关

render支持给两种html文件传值的方式。
python所有的基本数据类型,函数名,类型,对象都可以被传到html上。
针对函数名和类名,模板语法会自动加括号调用(但是不支持传递额外的参数)

模板语法统一采用局点符 . 方式获取容器类型中的数据
.key
.index
.key.index.index.key

前端:

{% for user_obj in user_queryset %}
                        <tr>
                            <td>{{ user_obj.id }}</td>
                            <td>{{ user_obj.username }}</td>
                            <td>{{ user_obj.password }}</td>
                            <td>{{ user_obj.password }}</td>
                        <td>
                            <a href="" class="btn btn-primary btn-xs">编辑</a>
                            <a href="" class="btn btn-danger btn-xs">删除</a>
                        </td>
                        </tr>
                    {% endfor %}

后端:

def index(request):
    # 模版语法可以传递的后端python数据类型
    n = 123
    f = 11.11
    s = '我也想奔现'
    b = True
    l = ['小红', '姗姗', '花花', '茹茹']
    t = (111, 222, 333, 444)
    d = {
        'username': 'jason',
        'age': 18,
        'info': '这个人有点意思',
        'hobby':[1,2,3,{'info':'junjie'}]
    }
    se = {'晶晶', '洋洋', '嘤嘤'}

    def func():
        print('我被执行了')
        return '你的另一半在等你'

    class MyClass(object):
        def get_self(self):
            return 'self'

        @staticmethod # 转为普通函数
        def get_func():
            return 'func'

        @classmethod # 绑定给类的方法
        def get_class(cls):
            return 'cls'

        """
        对象被展示到html页面上 
        就类似于执行了打印操作也会触发
        __str__方法
        """
        def __str__(self):
            return '到底会不会?'

    obj = MyClass()

    # return render(request,'index.html',{})  # 一个个传
    return render(request, 'index.html', locals())

前端:

<body>
<p>{{ n }}</p>
<p>{{ f }}</p>
<p>{{ s }}</p>
<p>{{ b }}</p>
<p>{{ l }}</p>
<p>{{ d }}</p>
<p>{{ t }}</p>
<p>{{ se }}</p>
<p>传递函数名会自动加括号调用 但是模版语法不支持给函数传额外的参数:{{ func }}</p>
<p>传类名的时候也会自动加括号调用(实例化){{ MyClass }}</p>
<p>内部能够自动判断出当前的变量名是否可以加括号调用 如果可以就会自动执行  针对的是函数名和类名</p>
<p>{{ obj }}</p>
<p>{{ obj.get_self }}</p>
<p>{{ obj.get_func }}</p>
<p>{{ obj.get_class }}</p>
<p>{{ d.username }}</p>
<p>{{ l.0 }}</p>
<p>{{ d.hobby.3.info }}</p>
</body>

image

posted @ 2022-03-03 16:52  谢俊杰  阅读(149)  评论(0编辑  收藏  举报