Django 模板介绍和基本语法

本贴最后更新于 1936 天前,其中的信息可能已经时移世改

一. 功能概述

网页内容一般都是动态的,因此需要在网页中利用一些工具来动态地显示从服务器端获取的数据,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 %}句。
{%  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 时才会被执行。
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖 • 1 关注
  • Django
    47 引用 • 72 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...