Django_Day3
Day03
快捷键
- control + d 复制一行,插入到下面
- alt + shift + ↑↓ 移动一行
标签
- {% %} 标识符
- 标签分为单标签和成对的标签
- 成对的标签切记不能省略,开始标签和结束标签
- | 相当于管道符
结构标签
-
block
-
块
-
用来规划我们的布局 (挖坑)
-
首次出现,代表规划
-
第二次出现,代表填充以前的规划
-
第三次出现, 代表填充以前的规划,默认动作是覆盖
- 如果不想覆盖,可以添加 {{ block.super }}
- 这样就实现了增量式操作
-
-
extends
- 继承
- 可以获取父模板中的所有结构
-
block + entends
- 化整为零
-
include
- 包含
- 可以将页面作为一部分,嵌入到其它页面中
-
include + block
- 由零聚一
-
三个标签也可以混合使用
-
能用block + extends搞定的 就尽量不要使用include
-
如果我们继承自一个父模板,子模版自己直接重写页面结构是不生效的,只能在既有坑中进行填充
静态资源
-
动静分离
-
创建静态文件夹
-
在settings中注册 STATICFILES_DIRS=[]
-
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ]
-
在模板中使用
- 先加载静态资源 {% load static %}
- 使用 {% static 'xxx' %} xxx相对路径
-
坑点
- 仅在debug模式可以使用
- 以后需要自己单独处理
urls
-
路由器
- 按照列表的书写顺序进行匹配的
- 从上到下匹配,没有最优匹配的概念
-
路由规则编写
- 我们通常直接指定以 ^ 开头
- 在结尾处直接添加反斜线
-
路由路径中的参数使用“ () ” 进行获取
-
一个圆括号对应视图函数中的一个参数
-
参数的种类:
-
路径参数:
-
位置参数
-
url(r'^gettime/(\d+)/(\d+)/(\d+)/', views.get_time, name='get_time')
-
按照书写顺序进行匹配
-
-
关键字参数
-
url(r'^getdate/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/', views.get_date, name='get_date'),
-
按照参数名称匹配,和顺序就无关了
-
-
-
参数个数必须和视图函数中参数个数一致(除默认的request以外)
-
-
-
反向解析
-
根据根路由中注册的namespace和在子路由中注册name,这两个参数来动态获取我们的路径
-
子路由:
url(r'^learn/', views.learn, name='learn'),
-
项目的总路由:
url(r'^more/', include('Two.urls', namespace='second')),
-
-
在模板中使用 {% url 'namespace:name' %}
-
如果带有位置参数 {% url 'namespace:name' value1 value2 [valuen...] %}
-
如果带有关键字参数 {% url 'namespace:name' key1=value1 key2=value2 [keyn=valuen....] %}
-
错误页面定制
-
直接修改html自带服务器不会重启
-
在模板中重写对应错误状态码页面
-
关闭Debug
-
实现原则
- 就近原则【如果想重写404页面就直接创建一个404.html就行了,可以直接覆盖django自带的404】
双R
-
Request
-
内置属性
-
method : get/post……
-
path : 输出的是url中的路径目录
-
GET :<QueryDict: {'hobby': ['coding', 'sleeping', 'eating']}>
-
类字典结构<QueryDict: {}>
-
一个key允许对应多个值,默认只取得最后一个
-
?hobby=coding&hobby=sleeping&hobby=eating
- get :获取单个值
- getlist:获取多个值
-
-
POST
-
META
- 各种客户端元信息
- REMOTE_ADDR 远端访问IP
-
-
-
Response
知识点
-
locals
- 内置函数
- 将局部变量,使用字典的方式进行打包
- key是变量名,value是 变量中存储的数据
Python内存分配
-
垃圾回收使用引用计数器
-
python中的注释
- 单行注释 #
- 多行注释 “”“ ”“”
-
-
id([1,2,3]) == id([4,5,6])
- 存在赋值符号 = 才会进行内存划分
- 没有赋值,直接调用会在临时缓冲区,id获取临时缓冲区的内容,id一样
作业
-
班级和学生级联显示
-
班级列表
-
班级列表可点击
-
点击之后显示本班的所有学生
-
要求
-
路径全都使用反向解析
-
在学生列表页面添加点击事件
-
点击学生可以进入学生详情
-
在详情中,存在删除按钮,点击删除
- 逻辑删除或物理删除都ok
-
-
在学生列表最后面,添加输入窗口,可以添加学生
-
-