Django框架全面讲解 -- 模板

来源:互联网 发布:台州首届网络风云榜 编辑:程序博客网 时间:2024/06/12 08:05

1.模板的执行
模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。

# view.pydef index(request):    return render(request, 'index.html', {'title':'welcome'})# index.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <div>        <h1>{{ title }}</h1>    </div></body></html>

2.模板语言
模板中也有自己的语言,该语言可以实现数据展示

    {{ item }}    {% for item in item_list %}  <a>{{ item }}</a>  {% endfor %}      forloop.counter      forloop.first      forloop.last     {% if ordered_warranty %}  {% else %} {% endif %}    母板:{% block title %}{% endblock %}    子板:{% extends "base.html" %}       {% block title %}{% endblock %}    帮助方法:    {{ item.event_start|date:"Y-m-d H:i:s"}}    {{ bio|truncatewords:"30" }}    {{ my_list|first|upper }}    {{ name|lower }}

小知识点:在模板语言中字典数据类型的取值是通过dict.xxx而不是dict[xxx]
3. 自定义标签
因为在模板语言中不能够做运算等一些稍显复杂的操作,所以在Django中提供了两种自定制标签,一种是simple_tag,一种是filter。
simple_tag: 任意传递参数,但是不能用作布尔判断
filter: 最多只能传递二个参数,可以用作布尔判断
在这里着重介绍simple_tag类型,filter的实现类似
a、在app中创建templatetags模块
b、创建任意 .py 文件,如:xx.py

#!/usr/bin/env python#coding:utf-8from django import templatefrom django.utils.safestring import mark_safefrom django.template.base import resolve_variable, Node, TemplateSyntaxErrorregister = template.Library()@register.simple_tagdef my_simple_time(v1,v2,v3):    return  v1 + v2 + v3@register.simple_tagdef my_input(id,arg):    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)    return mark_safe(result)

c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名

{% load xx %}

d、使用simple_tag

{% my_simple_time 1 2 3%}{% my_input 'id_username' 'hide'%}

e、在settings中配置当前app,不然django无法找到自定义的simple_tag

INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'myapp',)

更多见文档:https://docs.djangoproject.com/en/1.10/ref/templates/language/

原创粉丝点击