Django2.0-templates(2)-模版变量

模板笔记借鉴了知了课堂-Django开发

模版变量

  • render(request, templates.html, context=dict_variable)使用的时候需要给context赋值一个dict变量

    • 假设该dict变量是d,它的键是kk,kk对应的值是vv
  • 将这个kk放到模板中,格式是{{ kk }},render执行的时候就会将kk替换成vv

  • 如果想要访问对象的属性,也就是kk是一个类的实例,那么可以通过kk.属性名来访问

  • 如果vv是一个字典,想要访问他的key:subkey对应的value:subvalue,只能通过{{kk.subkey}},不能通过{{kk[subkey]}}访问

    • 所以不能将字典的键设置为keys values items其中一种,会覆盖dict.keys dict.values dict.value属性
  • 如果想要访问列表或者元组,通过kk.index和即可进行访问,不能通过kk[index]进行访问,其中index是列表/元组索引

  • 例子

    #urls.py
    urlpattern = [
    path('templates/', v.url_templates),
    ]
    
    #urls.py
    
    class Person(object):
        def __init__(self, name):
            self.name = name
            return
    
    
    p = Person("Lee")
    
    
    d = {
        "param": "jack", # 该key对应一个str
        "person": p, #  该key对应一个实例对象
        "dict": { # 该key对应一个字典
            "index1": 1,
            "index2": 2,
        },
        "dict_change": { # 该key对应一个字典,这个字典的键全部都用了dict的内置函数名
            "keys": "dict.keys has changed",
            "values": "dict.values has changed",
            "items": "dict.items has changed",
        },
    
        "list": [ # 该key对应一个list,tuple同理
            "list1",
            "list2",
        ],
    }
    
    def url_templates(request):
        return render(request, "index.html", context=d)
    
    <!-- index.html -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {{ param }}
        <br><br>
        {{ person.name }}
        <br><br>
        {{ dict.index1 }}
        <br>
        {{ dict.keys }}
        <br>
        {{ dict.values }}
        <br>
        {{ dict.items }}
        <br><br>
    
        {{ dict_change.keys }}
        <br>
        {{ dict_change.values }}
        <br>
        {{ dict_change.items }}
        <br><br>
    
        {{ list.0 }}
        <br>
    
    </body>
    </html>
    
  • 运行

    Django2.0-templates(2)-模版变量