当前位置: 首页 > 后台 > Django

Django模板介绍和基本变量语法

作者: admin 2019-07-12 12:10:40 阅读(370) 评论(0)

一. 功能概述

网页内容一般都是动态的,因此需要在网页中利用一些工具来动态地显示从服务器端获取的数据,django 的模板系统恰好可以帮助我们实现这些功能。

二. 常见语法

1. 变量语法 {{ 变量名 }}

变量可以输出动态的值。例如在 views.py 里定义如下函数,向 index.HTML 中返回变量名为 first_name,值为"zhang"和变量名为 last_name,值为"san"的两个变量。

def to_index(request):
    return render(request, 'index.html', {"first_name": "zhang", "last_name": "san"})
  • 我们可以在 index.HTML 中编写{{ first_name }} 和 {{ last_name }}来获取从后台传来的值。
    例如: My last_name is {{ last_name }}.
    显示为:My last_name is san.

  • 当然还有更加高级的用法,向页面返回的可能是一个字典对象,可以通过.符号来获取字典中键值所代表的数据。例如在 views.py 中定义这样一个函数,向 index.HTML 返回一个 person 字典对象。

def return_dic(request):
    person = {'name': 'zyk', 'identity': 'student'}
    return render(request, 'index.html', {'person': person})
  • 在页面中通过{{ person.name }},{{ person.identity }}来获取相应值。
    例如: {{ person.name }}
    显示为:zyk

2. 标签语法

  • 标签可以在显示网站内容时提供逻辑,例如 if,else,for 等,也能对显示内容进行会格式化和定制。
    标签语言一般都是块级别的,类似于 HTML 中的 div 标签,一般都有表示开头和结尾的符号,然后在中间插入或者处理一段内容。先讲常用的 if,else,for 标签语言,之后再慢慢补充。

2.1 for 标签语法

{% for person in person_list %}
    <div> {{ person.name }} </div>
{% end for %}
  • {% for person in person_list % } {% end for %}表示这是一个 for 循环块级作用域。

    {% for person in person_list % }是开始标志,{% end for %}是结束标志,实现的功能是遍历人员列表 person_list。

    person_list 是从服务器端接收的一个列表,名称必须与服务器传来的参数名一致;person 表示单次循环的变量,这个可以自已定义,例如改成 obj,则写法为{% for obj in person_list % }。

  • 然后在每次循环中显示人员的姓名,调用方式为之前所述的变量语法,{{ person.name }},.表示从 person 字典中获取键为 name 的值。
    {% for person in person_list reversed % }表示反向循环遍历 person_list 列表。

{% for person in person_list % }
        <div> {{ person.name }} </div>
     {% empty %}
         <div> 空列表 </dvi>
{% end for %}
  • 上述代码中的 {% empty %}表示列表为空或者无法找到时,执行该语句之后的内容。

2.2 if-else 标签语法

{%  if person_list %}
    <div> 此列表不为空 <div></div>
{% end if %}
  • {% if person_list %} {% end if %}表示 if 标签的块级作用域,{% if person_list %} 中,if 的作用是判断 person_list 列表是否存在,为真时即 person 列表不为空时,显示{% if person_list %}{% end if %}句。

html {% if sex == 1 %} <div> 男 <div/> {% elif sex == 0 %} <div> 女 <div/> {% else %} <div> 未知性别 <div/> {% end if %}

  • {% elif sex == 0 %}等同于 else if sex == 0,{% else %}等同于 else,这段代码实现的功能是判断 sex(性别)变量的值,若为 1,表示为男性;若为 0,表示为女性;若为除此之外的情况,则为未知性别。注意使用 if-else 标签时,作用域的范围,{% 语句 1 %}和{% 语句 2 %}之间的内容只有满足语句 1 时才会被执行。
0 条评论