Django 模版语言

传入变量

{{ 变量名 }}

在 view.py 的函数返回 render 时在html文件名后传入一个字典,字典的 key 对应html文件中的变量名,value 为传入的值
views.py:

def func(request):
    return render(request, "index.html", {'current_user': "bob"})

index.html:

<body>
    <div>{{current_user}}</div>
</body>

最后生成的字符串

<body>
    <div>bob</div>
</body>

循环

For循环

views.py:

def func(request):
    return render(request, "index.html", {'current_user': "bob", 'user_list': ['bob','jack']})

index.html:

<body>
    <div>{{current_user}}</div>
    <ul>
        {% for row in user_list %}
            {% if row == "bob" %}
                <li>{{ row }}</li>
            {% endif %}
        {% endfor %}
    </ul>
</body>
字典循环

views.py:

USER_DICT = {
        '1': {'name': 'user1', 'age': '12', 'gender': 'M'},
        '2': {'name': 'user2', 'age': '12', 'gender': 'M'},
        '3': {'name': 'user3', 'age': '12', 'gender': 'M'},
        '4': {'name': 'user4', 'age': '12', 'gender': 'M'},
    }
def show_dict(request):
    return render(request, 'dict.html', {'user_dict': USER_DICT})

index.html:

  • .keys: 只显示 key(默认状态)
<body>
    <ul>
        {% for i in user_dict.keys %}
            <li>{{ i }}</li>
        {% endfor %}
    </ul>
</body>

输出:

<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
  • .values: 只显示 value
<body>
    <ul>
        {% for i in user_dict.values %}
            <li>{{ i }}</li>
        {% endfor %}
    </ul>
</body>

输出:

<li>{'name': 'user1', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user2', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user3', 'age': '12', 'gender': 'M'}</li>
<li>{'name': 'user4', 'age': '12', 'gender': 'M'}</li>
  • .items: 同时显示 key 和 value
<body>
    <ul>
        {% for i in user_dict.items %}
            <li>{{ i }}</li>
        {% endfor %}
    </ul>
</body>

输出:

<li>('1', {'name': 'user1', 'age': '12', 'gender': 'M'})</li>
<li>('2', {'name': 'user2', 'age': '12', 'gender': 'M'})</li>
<li>('3', {'name': 'user3', 'age': '12', 'gender': 'M'})</li>
<li>('4', {'name': 'user4', 'age': '12', 'gender': 'M'})</li>

扫描二维码关注公众号,回复: 6251466 查看本文章
<body>
    <ul>
        {% for k, v in user_dict.items %}
            <li>{{ k }}:{{ v }}</li>
        {% endfor %}
    </ul>
</body>

输出:

<li>1:{'name': 'user1', 'age': '12', 'gender': 'M'}</li>
<li>2:{'name': 'user2', 'age': '12', 'gender': 'M'}</li>
<li>3:{'name': 'user3', 'age': '12', 'gender': 'M'}</li>
<li>4:{'name': 'user4', 'age': '12', 'gender': 'M'}</li>

示例:
通过 a 标签提交 get 请求

<ul>
{#/detail/?nid= 方式#}
    {% for k, v in user_dict.items %}
        <li><a target="_blank" href="/detail/?nid={{ k }}">{{ v.name }}</a></li>
    {% endfor %}
</ul>
<li><a target="_blank" href="/detail/?nid=1">user1</a></li>
<li><a target="_blank" href="/detail/?nid=2">user2</a></li>
<li><a target="_blank" href="/detail/?nid=3">user3</a></li>
<li><a target="_blank" href="/detail/?nid=4">user4</a></li>
索引

模版语言中不使用'[]'进行索引,而是直接'.'

views.py:

def func(request):
    return render(request, "index.html", {
                'current_user': "bob", 
                'user_list': ['bob','jack'], 
                'user_dict': {'k1': 'v1', 'k2': 'v2'}})

index.html:

    <body>
        <div>{{current_user}}</div>
        <a> {{ user_list.1 }} </a>
        <a> {{ user_dict.k1 }} </a>
        <a> {{ user_dict.k2 }} </a>
    </body>

判断

条件

views.py:

def func(request):
    return render(request, "index.html", {
                'current_user': "bob", 
                "age": 18,

index.html:

    <body>
        <div>{{current_user}}</div>
        {% if age %}
            <a>有年龄</a>
            {% if age >= 18 %}
                <a>成年</a>
            {% else %}
                <a>未成年</a>
            {% endif %}
        {% else %}
            <a>无年龄</a>
        {% endif %}
    </body>

猜你喜欢

转载自www.cnblogs.com/dbf-/p/10880221.html
今日推荐