欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-24 23:11:22
...

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 %}
     最终结果为:
    第一行,固定部分。
    已替换
     

本章先写到这!