1.模板标签系统

在做web开发,要给用户提供一个页面,页面包括静态页面+数据,两者结合起来就是完整的可视化的页面,django的模板系统支持这种功能,首先需要写一个静态页面(结构html,样式css,行为js)然后通过python的模板语法将数据渲染上去。

1.1.设置

a.在主目录下创建一个templates目录
b.修改setting.py文件,内容如下:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],#添加这一行
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

1.2.调用模板方法

def WeiXinRes(request, infoStr):
    info={};
    return render(request,"WeiXinLoginResponse.html",info);

2.模板标签语法

2.1.变量的使用

使用locals()方法,作用是将当前视图函数的所有局部变量返回。

#返回数据
def WeiXinRes(request, promptInfoStr, jsonData):
    info={"promptInfoStr":promptInfoStr,"jsonData":jsonData};
    return render(request,"WeiXinLoginResponse.html",locals());

变量的形式如下:{{ variable }}

2.2.控制语句

if else elif
模板中使用控制语句,语法结构
{% if 条件 %}
{% elif 条件 %}
{% else %}
{% endif %}
范例:

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
    Athletes should be out of the locker room soon!
{% else %}
    No athletes.
{% endif %}

2.3.循环语句

范例:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

3.自动转义

默认开启自动转义。

3.1.自动转义内容

< 被替换为 &lt;
> 被替换为 &gt;
' (单引号)被替换为 &#x27;
" (双引号)被替换为 &quot;
& 被替换为 &amp;

3.2.禁止自动转义

{% autoescape off %}
    Hello {{ name }}
{% endautoescape %}
07-01 12:42