1.中间件

  中间件的作用 : 在全局范围内控制django的输入和输出的钩子函数

  中间件中有5种方法:

    process_request : 请求进来时,进行验证

    process_views : 路由匹配成功之后,能够得到视图函数

    process_exception :  处理异常时执行

    process_template_responseprocess : 模板渲染时执行

    process_response : 将处理完的请求发送出去

2.路由系统(url)

  路由中基本上就是正则匹配,

  url(正则表达式, 视图.函数, 别名)

  正则  : r'^xxx/$'

    分组和命名分组:

      分组(), 在视图函数中,传参时接收参数变量名随便起,

      命名分组 (?P<name>) ,传参时,变量名必须为name.

  include 路由分发

  url的命名和反向解析

    {% url '别名'  位置参数  关键字参数 %}

    reverse (别名, args=(a,) , kwargs={ x: xx})

  namespace  如果运用了namespace,在模板渲染时 :

    {% url  namespace: 别名   位置参数  关键字参数 %}

3.视图函数

  写法 :FBV , CBV

  request可以有多少方法(需要至少掌握10中以上)

    GET GET请求 ,

    POST   POST请求,

    FILES  上传文件 ,

    method   判断提交方式,

    body 请求体 ,

    COOKIES  以cookie的形式发送 ,

    SESSION 以session的形式发送  ,

    path_info  获取当前url 不带参数 ,

    get_full_path  获取当前url 带参数 ,

    is_ajax       

    is_ajax()会判断请求头里 'HTTP_X_REQUESTED_WITH'的值。如果请求方式不为ajax,那么请求头里是不含'HTTP_X_REQUESTED_WITH'的。如果是ajax请求,is_ajax()则会返回True.

  response

    Httpresponse  返回字符串

    render   返回一个页面

    redirect(' /index/ ')   重定向

    JsonResponse  以Json的形式返回

4.模板

  {{ 变量 }}   {% 逻辑 %}

5.ORM操作

  13条

    返回queryset对象

      all  获取所有的对象

      filter  筛选出xxx对象

      value 拿到对应的对象

      exclude

      value_list  获取value,以列表的形式返回

      order_by  排序

      reverse  翻转

      distinct   去重

    返回对象的

      get

      first

      last

    布尔值

      exists

    数字

      count

  外键

    多对多

      作者    书籍

      author_obj.books.all()

      author_obj.books.add([1,2])

      author_obj.books.remove(id)

      author_obj.books.set([book_id1,book_id2])

      author_obj.books.clear()

      author_obj.books.create()

    聚合和分组

      aggregate()  聚合查询

      annotate()    分组查询

    F 和 Q查询

      Q(aa_contains='xx') | Q(aa_contains='sss')

      Q(('aa_contains','xx'),)

      filter(aa_lte=F(bb_gt)*3)

6.cookie 和 session

7.ajax

8.form   ModelForm  ModelFormset