一、模型或表有问题时
- 删除数据库
- 删除迁移目录
- 创建数据库
- 执行生成迁移文件以及目录
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
<a href="{% url 'qf:test04' %}"> 第四页 </a>
# url(r'^grade/(\d+)/(\d+)/(\d+)/', views.grade, name='grade')
# def grade(request, a, b, c):
<a href="{% url 'qf:grade' 10 11 3 %}"> 你知道我是哪个班? </a>
五、模板继承
-
作用
提高页面的代码复用(抽取共有部分,作为基类); -
block标签
- 挖坑和填坑过程 - 语法 # 挖坑 {% block 标签名(坑的名字) %} {% endblock 标签名 %} # 填坑 {% block 标签名 %} 代码 {% endblock 标签名 %}
- extends标签
{% extends 'base.html' %}
六、HTML转义
return render(request, 'cart.html', context={'code':'<h1> 购物车 </h1>'})
# 默认会转义: 当前普通字符串
{{ code }}
# 方式一: 过滤
{{ code|safe }}
# 方式二: 关闭自动转义
{% autoescape off %}
{{ code }}
{% endautoescape %}
作业: 班级和学生(一对多)
## 添加班级
## 添加学生
## 显示班级
## 班级可以点击,点击班级显示对应的学生信息
## 显示学生
网友评论