`

从零开始搭建Python web框架——Django(二)

阅读更多

Django模板↓

  1. 在上一篇建立的项目下的templates目录下新建模板文件hello.html,目录结构如下:
    HelloWorld/
    |-- HelloWorld
    |-- manage.py
    `-- templates
        `-- hello.html
     
  2. hello.html代码如下:
    {{hello}}
     
  3. 修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS :
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [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',
                ],
            },
        },
    ]
     
  4. 修改 view.py,新建一个方法,绑定字典到模板中
    # -*- coding: utf-8 -*-
     
    #from django.http import HttpResponse
    from django.shortcuts import render
     
    def hello(request):
        context          = {}
        context['hello'] = 'Hello World!'
        return render(request, 'hello.html', context)
     
  5. 浏览器访问http://127.0.0.1:8000/hello,页面打印出了Hello World!

下面介绍Django模板的标签:

  1. if标签:
    {% if ... %}
       ...
    {% elif ... %}
       ...
    {% else %}
       ...
    {% endif %}
     if的条件接受 and , or 或者 not 关键字。
  2. for标签:
    <ul>
    {% for v in list %}
        <li>{{ v }}</li>
    {% endfor %}
    </ul>
    <ul>
    {% for v in list reversed %}{# 反向迭代 #}
        <li>{{ v }}</li>
    {% endfor %}
    </ul>
     
  3. ifequal/ifnotequal标签:
    {% ifequal value 'aaa' %}
        如果value等于aaa,显示该部分
    {% else %}
        不等于aaa
    {% endifequal %}
     
  4. 注释标签:
    {# 注释 #}
     
  5. include标签:
    {% include "nav.html" %}
     
  6. 过滤器:
    {# 转小写 #}
    {{ name|lower }}
    {# 输出第一个元素,并转大写 #}
    {{ my_list|first|upper }}
    {# 过滤器可以带参数,显示变量的前30个单词 #}
    {{ bio|truncatewords:"30" }}
    {# 格式化date对象 #}
    {{ pub_date|date:"F j, Y" }}
    {# 添加反斜杠到任何反斜杠、单引号或者双引号前面 #}
    {{ value|addslashes }}
    {# 返回变量的长度 #}
    {{ value|length }}
     
  7. 模板继承:
    <p>第一行,固定部分。</p>
        {% block main %}
           block 为被继承者替换的部分
        {% endblock %}
     
    {% extends "base.html" %}
     
    {% block main %}已替换
    {% endblock %}
     最终结果为:
    第一行,固定部分。
    已替换
     

本章先写到这!

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics