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
      • 在学生列表最后面,添加输入窗口,可以添加学生

posted @ 2020-02-02 22:48  东坡肉肉君  阅读(123)  评论(0)    收藏  举报