全面Django复习笔记

发布于 16 天前  14 次阅读


  • Django知识点回顾

    • 路由 URL

      • 作用:

        • 路由用来确定网络服务的地址
      • 使用:

        • url(),path(),re_path()

        • 常用参数(第二个参数可以是include())

          • 第一个是地址
          • 第二个参数是views处理的函数
          • 第三个参数可以是反向解析
        • url中获取参数(参数类型为字符串)

          • 用()来分组,分组的内容就是一个位置参数,名称随意
          • 用(?P\\d) 关键字传参,函数的名称要和这个一直
        • path中获取参数

          • 用<>来分组,可以格式化参数为字符串,整数等等,可以指定参数名
    • 视图 View

      • 作用:

        • 处理请求,响应内容
      • 使用:

        • def myView(request,...args)
              # 1.根据模型查询,添加,修改,数据库
            books = models.Book.objects.all()
            # 2.生成一个html文档(render,HttpResponse等等)
            # 返回文档HttpResponse对象
      • 视图函数常用返回

        • return Httpresponse(‘’)
        • return render(request,’xx.html’,locals())
        • return HttpResponseRedirect(‘/user/login’)
        • return redirect(‘/user/login’)
        • raise Http404 # 报404错误
      • 视图函数的参数

        • 从路由中获取参数
        • 从GET中获取数据
        • 从POST中获取数据
    • 请求 request

      • 作用

        • 用来记录浏览器给服务端的信息
      • 请求的方式:

        • http 1.0 中:GET,POST,HEAD
        • http 1.1 中:PUT,DELETE,CONNECT,OPTIONS,TRACE
      • request常用属性

        • request.path 显示路由信息
        • request.path_info 显示路由信息的字符串
        • request.method 字符串,用来判断请求方式
        • request.GET 获取GET请求的数据信息
        • request.POST 获取POST请求
        • reques.COOKIES 字典
        • request.session 类字典类型,存储会话信息
        • request.COOKIE 类字典信息,存储cookie信息
      • 文档

    • 响应 response

      • 作用:

        • 用来记录服务端传递给浏览器的数据
      • HTTP响应状态码

        • 1xx 服务器收到请求,需要再次处理
        • 2xx 成功
        • 3xx 重定向
        • 4xx 客户端错误
        • 5xx 服务器错误
      • 文档

    • GET方式传参

      • 传递

        • /book?page=1&perpage=10
          • page是当前页
          • perpage是每页记录个数
      • 获取

        • request.GET.get(“page”,1)
    • MVC

      • M 模型

        • (Model)用于数据库封装(ORM)
      • V 视图

        • (View)相当于MTV的模板,用来展示结果
      • C 控制器

        • (Controller)用于处理业务逻辑
      • 作用:

        • 用于降低耦合,降低程序直接的复杂程度,提高可维护性
    • MTV

      • M 模型
      • T 模板
      • V 视图
    • 模型

      • ORM

        • Object Ralationship Mapping 对象关系映射
        • 用类来描述数据库(创建数据库),
        • 用创建的对象来代表某一条记录
      • 作用:

        • 用操作对象的方式来操作数据库
        • 降低了数据库使用的门槛
      • 常用字段

        • BooleanField
        • CharField
        • DateField
        • DatetimeField
        • IntegerField
        • FloatField
        • DecimalField
      • 常用字段参数

        • null=True
        • default=“”
        • db_index=True
        • unique=True
        • db_column=“”
      • 使用方法:

        • class Book(models.Model)
              bookname = models.CharField(max_length=20)
    • 模型的操作

      • 创建数据对象

        • # 第一种方式
          abook = models.Book.objects.create()
          # 第二种方式
          abook = models.Book()
          abook.title="xxx"
          abook.save()
      • 查看数据对象

        • models.Book.objects.all()
          models.Book.objects.get(id=1)
          models.Book.objects.filter(id__get=3)
          models.Book.objects.exclude()
      • 修改数据对象

        • # 单个修改
          abook = models.Book.objects.get(id=1)
          abook.title="c++"
          abook.save()
          # 全部修改
          books = models.Book.objects.all()
          books.update(pub_house = "清华")
      • 删除数据对象

        • # 删除单条数据和多条数据
          abook.delete()
          books.delete()
      • 不带分组的聚合函数

        • Sum,Avg,Count,Max,Min
      • models.Book.objects.aggregate(myAvg=Avg(‘price’))

      • 带分组的聚合

        • 查询集合.anotate(myCoount=Count(‘pub’))
      • F对象

        • 作用:
          • 用于按列操作,代表某个字段当前值
        • 使用
          • abook = models.Book.objects.filter(market_price__gt=F(‘price’))
          • market_price市场价,price当前价格
      • Q对象

        • 作用
          • 用于与|,或&,非~操作
        • 使用
          • modele.Book.objects.filter(Q(titlecontains(“a”)) & Q(titlecontains(“b”)))
      • 原生数据库操作方法

        • raw()

          • 作用:
            • 用来查询
          • books= Book.bojects.raw(‘select * from book;’)
        • 其他操作(cursor拿到游标)

        • from django.db import connection
              with connection.cursor() as mycur:
              mycur.excute(‘delete from book where id = 1’)
      • 数据表的关系映射

        • 一对一
          • OneToOneField
        • 一对多
          • ForeignKey
        • 多对多
          • ManytoManyField
    • 模板

      • 作用:

        • 用指定的语法标签,生成html
      • 大型网站,一般不用模板

        • 模板自适应比较困难
      • 常用标签

        • if 标签
            {% if 条件 %}
            {% elif 条件 %}
            {% endif %}
          
          for 标签
            {% for 变量 in 可迭代对象 %}
            {% empty %}
            {% endfor %}
          
          cycle标签
              {% cycle 'value1' 'value2' %}
          
          comment标签 用于注释
          
          过滤器
              {{ value | upper | }}
          
          escpe 转义
            < &lt;
            > &gt;
            ' &#39;
            " &quot;
            & &amp;
          
          模板继承
            <html>
              <body>
                {% block 块名 %}
                {% endblock %}
              </body>
            </html>
          
            {% extends 'a.html' %}
            {% block 块名%}
            {% endblock %}
          
          反向解析
              {# 可以方便找到路由 #}
            href={% url '别名' '参数1' '参数2' %}
    • APP 应用

      • 创建app

        • python manage.py startapp 应用名称
      • 文件目录

        • views.py 视图函数
        • urls.py 路由地址
        • modle.py 管理模型
        • admin.py 后台管理
        • tmplates/ 模板目录
      • 使用APP

        • 在setting中注册应用
    • Django shell的启动

      • python manage.py shell
    • 数据库后台管理

      • 创建管理用户

        • python manage.py createsuperuser
        • 实际上在auth_user创建一条记录
      • 使用后台

        • 在admin.py中注册自定义模型类
        • from django.contrib import admin
        • admin.site.register(models.Book)
    • QueryDict对象

      • POST和GET都是QueryDict的子集
    • Cookie和session

      • Cookie
        • 存储于浏览器,存储少量数据
        • http协议是无状态的协议
        • 一般都是存储session_id
      • session
        • 存储于服务器的数据
        • 要求浏览器的功能 cookie不能关闭
        • 存储服务器和浏览器交互使用的数据
    • CSRF

      • {% csrf_token %}
    • form 模块

      • 作用:

        • 1.用类来生成表单
        • 2.表单验证
      • 使用

        • class xxx(forms.Form)
            name = form.CharField(label="姓名")
            # 单条数据验证
            def clean_name(sele):
              if 条件不成立
                  raise form.ValidationError
              else:
                return self.cleaned_data['name']
            def clean(self)
                # 整体表单验证
              return self.cleaned_data
          
          xxx = xxx()
          xxx.as_p() 返回
          <label>姓名</label>
          <input type='text' name='name'>
          表单验证
          myxxx = XXX(reques.POST)
          if myxxx.is_valide():
              n= myxxs.cleaned_data['name']
    • 分页 Paginator

      • 作用:将大量数据结果集进行部分显示

      • 使用方法:

        • paginator = Paginator(查询.all(),perpage)
          page = Paginator.page(页数)
          {% for p in page %}
          {{p}}
          {% endfor %}
    • 文件上传

      • 表单from写法

        • <form method='post' action='' enctype = ‘multipart/form=data’>
          <input type='file' name='myfile'>
          </form>
      • 服务端获取

        • request.FILES(‘myfile’)
    • 项目部署

      • WSGI(web server gateway interface)
      • uwsgi是WSGI的一个实现方式,转么用于django,flash等等python架构网站的假设
    • Nginx

      • 负载均衡
        • 负载:一台服务所能承受最大人数
        • 服务器负载满载,就转发给另一台服务器
      • 反射代理
        • 把请求分发给不同的服务器
  • 单行文本水平垂直居中

    • line-height 垂直居中
    • margin_auto 对块元素好使
    • text_align 水平居中
  • parseInt(3,8) 转换为10进制显示

    • 8为机理 2-36
    • 如果机理是0,可能是不选,也可能是错误
    • 以3位要转换的数字,8位要转换的进制
  • 进制

    • 十进制
      • 1=1
      • 10=10
      • 100=10^2
    • 二进制
      • 1=1
      • 10=2
      • 100=2^2
  • javascript typeof返回的结果

    • string
    • boolean
    • object
    • function
    • Nubmer
    • undefined
  • JavaScript 包装类

  • JavaScript 逗号

    • (1,2) 返回2
    • function1,function2 返回 function2
  • JavaScript 括号 ()

    • ()将里面内容转换为表达式
    • 函数一旦被转换为表达式,就变成立即执行函数
  • JavaScript (undefined null NaN细节)

    • undefine == null True
      • undefine 和 null 都是不大于,不小于,不等于0
      • NaN不等于NaN
      • isNaN() 要先转换为Number
      • 要比较NaN,先将NaN转换为字符串
  • JavaScript this

    • this在哪执行,使用的就是谁的this
    • 如果没有人调用,走的就是预编译(window)
    • arguments AO对象中arguments
    • this:window AO对象中定义了this
    • new 对象时候 this才被改变
    • call和apply改变this指向
    • var obj = {a:function(){}}
      • obj.a() 谁调用,this执行谁
  • python 拼接函数名执行函数

  • Python 表单验证

  • Python判断方法,绑定方法

    • from types import MethodType
      • Method(要绑定的方法,要绑定的对象)

      • 可以将一个方法动态绑定到对象上,实现自定义方法名调用方法

    • hasattr(object, name)

      • 参数是一个对象和一个字符串。如果字符串是 object 属性之一的名称,则结果为 True,否则为 False。(这是通过调用 getattr(object, name) 并查看它是否引发 AttributeError 实现的。)
    • setattr(object, name, value)

      • 它和 getattr() 是一对。参数是一个对象,一个字符串和一个任意值。该字符串可以是现有的属性名或新的属性名。如果该对象允许,该函数将 value 分配给该属性。例如,setattr(x, 'foobar', 123) 等同于 x.foobar = 123
    • getattr(object, name[, default])

      • 返回 object 的指定属性的值。name 必须是字符串。如果字符串是 object 属性之一的名称,则结果是该属性的值。例如,getattr(x, 'foobar') 等同于 x.foobar。如果指定的属性不存在,则返回默认值(如果提供),否则引发 AttributeError

2020年5月18日19:35:50


Ares个人进阶之路