django标签及路由——模板使用

一、模型或表有问题时

- 删除数据库
- 删除迁移目录
- 创建数据库
- 执行生成迁移文件以及目录
    python manage.py makemigrations 应用名
- 执行迁移
    python manage.py migrate

二、模板

  • 组成

    - 网页代码(HTML/CSS/JS)
    - 动态插入数据(逻辑处理,数据渲染,数据填充...)
    
  • 作用

    快速生成HTML
    
  • 步骤

    - 加载
    - 渲染
    

三、模板使用

  • 变量

    从视图函数中 -> 模板  -> 显示
    
    使用:
        {{ var }}
        {{ 变量 }}
    

    变量不存在,则插入空的字符串

  • 标签

    逻辑处理.
    
    使用:
        {% tag %}
    
  • 标签if

    if 条件:
        pass
    else:
        pass
    
    {% if 条件 %}
        代码区块
    {% endif %}
    
    {% if 条件 %}
        代码区块1
    {% else %}
        代码区块2
    {% endif %}
    
    {% if 条件 %}
        代码区块1
    {% elif 条件 %}
        代码区块2
    ...
    {% else %}
        代码区块N
    {% endif %}
    
  • 标签for

    {% for 变量 in 列表 %}
        代码区域
    {% endfor %}
    
    # 循环的当前次数(从1开始)
    {{ forloop.counter }}
    
    # 循环的当前次数(从0开始)
    {{ forloop.counter0 }}
    
    {{ forloop.revcounter }}
    {{ forloop.revcounter0 }}
    
  • 单行注释

    {# 注释内容 #}
    

    模板中的注释,如果HTML注释 ``

  • 多行注释

    {% comment %}
        注释区块
    {% endcomment %}
    
  • 过滤器
    # 在变量显示之前修改它
    {{ var|过滤器 }}
    
    - lower 小写
    - upper 大写
    - join 拼接
    - default 默认值
    
  • 标签include
    # 加载模板(带参数渲染)
    {% include '模板位置' with 参数1 参数2 参数3... %}
    
    {% include 'index_footer.html' with user='zyz' namelist=names %}
    

四、反向解析

  • 基本语法
    {% url 'namespace:name' p1 p2.... %}
    name: url添加一个别名(不同应用中,可能会出现重名)
    namespace: 命名空间;
    a: test01
    b: test01
 第四页 


# url(r'^grade/(\d+)/(\d+)/(\d+)/', views.grade, name='grade')
# def grade(request, a, b, c):
 你知道我是哪个班? 

五、模板继承

  • 作用
    提高页面的代码复用(抽取共有部分,作为基类);

  • block标签

    - 挖坑和填坑过程
    - 语法
        # 挖坑
        {% block 标签名(坑的名字) %}
        {% endblock 标签名 %}
    
    
        # 填坑
        {% block 标签名 %}
            代码
        {% endblock 标签名 %}
    
  • extends标签
    {% extends 'base.html' %}
    

六、HTML转义

return render(request, 'cart.html', context={'code':'

购物车

'}) # 默认会转义: 当前普通字符串 {{ code }} # 方式一: 过滤 {{ code|safe }} # 方式二: 关闭自动转义 {% autoescape off %} {{ code }} {% endautoescape %}

作业: 班级和学生(一对多)

## 添加班级
## 添加学生
## 显示班级
##   班级可以点击,点击班级显示对应的学生信息
## 显示学生

你可能感兴趣的:(django标签及路由——模板使用)