• 关于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, “图片名称”)
  • 相关阅读:
    部分网络加载预训练模型代码实现
    数据不平衡处理方法
    面试题目汇总
    多线程和多进程
    数据结构知识点总结
    GBDT和XGBoost的区别
    GBDT和随机森林的区别
    机器学习-特征处理
    一篇写得很好的关于lct的博客
    Count and Say 2014/10/23
  • 原文地址:https://www.cnblogs.com/zty1304368100/p/10596766.html
Copyright © 2020-2023  润新知