09.模板详解 -- DTL

2019-03-15  本文已影响0人  __深蓝__

Django模板语言(DTL)

模板变量
模板变量的用来显示从服务端传递过来的数据

实例演练: 将字典值传递给页面

def temp_var(request):
    dict = {'title': '字典键值'}
    book = BookInfo()
    book.btitle = '对象属性'
    context = {'dict': dict, 'book': book}
    return render(request, 'app/temp_var.html', context)
<body>
模板变量:<br/>
{{ dict.title }}<br/>
{{ book.btitle }}<br/>
</body>

课堂练习

  1. 创建一个查询页面searchbook.html,用来输入图书的名字
  2. 将对应的图书信息显示在bookinfo.html页面上
  3. 假设查询到的图书只有一本
<body>
<form action="/app/dosearchbook/", method="post">
    请输入书名:<input type="text" name="bookname">
    <br>
    <input type="submit">
</form>
</body>
<body>
书名:{{ book.btitle }} <br>
出版日期:{{ book.bpub_date }} <br>
阅读数:{{ book.bread }} <br>
</body>
def searchbook(request):
    return render(request, 'app/searchbook.html')
def dosearchbook(request):
    bookname = request.POST.get('bookname')  # 用户输入的书名
    book = BookInfo.bookm.get(btitle=bookname)  # 根据用户输入的书名查询DB,得到图书对象

    content = {
        'book': book,
    }

    return render(request, 'app/bookinfo.html', content)
    url(r'^searchbook/$', views.searchbook),
    url(r'^dosearchbook/$', views.dosearchbook)

模板标签
语法格式:{% 代码段 %}

{% for item in 列表 %}
    循环逻辑
    {{ forloop.counter }}表示当前是第几次循环,从1开始
{% empty %}
    列表为空或不存在时执行此逻辑
{% endfor %}
{% if 条件1 %}
    逻辑1
{% elif 条件2 %}
    逻辑2
{% else %}
    逻辑3
{% endif %}

实例演练: 在页面上显示图书列表

def temp_book(request):
    context = {'list': BookInfo.objects.all()}
    return render(request, 'app/temp_book.html', context)
<body>
图书列表如下:
<ul>
    {% for book in list %}
        {% if book.id <= 2 %}
            <li style="color: red;">{{ book.btitle }}</li>
        {% elif book.id <= 3 %}
            <li style="color: blue;">{{ book.btitle }}</li>
        {% else %}
            <li style="color: green;">{{ book.btitle }}</li>
        {% endif %}
    {% empty %}
        <li>对不起,没有图书</li>
    {% endfor %}
</ul>
</body>

模板过滤器
使用过滤器对变量进行计算、格式转换等操作

实例演练: 对书名大于4个字符的图书,格式化其出版时间

def temp_filter(request):
    context = {'list': BookInfo.objects.all()}
    return render(request, 'app/temp_filter.html', context)
<body>
图书列表如下:
<ul>
    {% for book in list %}
        {% if book.btitle|length > 4 %}
            <li style="color: red;">
                {{ book.btitle }}
                ---默认时间格式为:
                {{ book.bpub_date }}
            </li>
        {% else %}
            <li style="color: green;">
                {{ book.btitle }}
                ---格式化时间为:
                {{ book.bpub_date|date:"Y-m-j" }}
            </li>
        {% endif %}
    {% endfor %}
</ul>
</body>

模板注释




- end -

上一篇 下一篇

猜你喜欢

热点阅读