关于django的一些基础知识

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操作

参考博客:   https://www.cnblogs.com/allen-w/p/9209315.html

基于双下划线查找:

__exact        精确等于 like ‘aaa’
__iexact       精确等于 忽略大小写 ilike ‘aaa’
__contains     是否包含 like ‘%aaa%__icontains    是否包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt           大于
__gte          大于等于
__lt           小于
__lte          小于等于
__in           存在于一个list范围内
__startswith   以…开头
__istartswith  以…开头 忽略大小写
__endswith     以…结尾
__iendswith    以…结尾,忽略大小写
__range        在…范围内
__year         日期字段的年份
__month        日期字段的月份
__day          日期字段的日
__isnull=True/False
__isnull=True 与 __exact=None的区别

  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

获取图片本地存储路径

# 一般写在settings中
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

MEDIA_ROOT = os.path.join(BASE_DIR, "图片存储的目录")

# 目标文件的本地存储路径
img_path = os.path.join(settings.MEDIA_ROOT, “图片名称”)
原文地址:https://www.cnblogs.com/zty1304368100/p/10596766.html