Python Django 框架知识点总结

CS/BS——客户端和服务器的交互模型

  • client--Browser
  • server--Web后端--python(django、flask)、java、php、go

 

MVC

  • 软件架构风格--不是标准
  • 将数据操作,业务处理,界面展示进行了拆分
  • 核心思想:解耦合    松耦合
  • Model:模型--封装数据的交互操作(CRUD)
  • View:视图--是用来将数据呈现给用户的
  • Controller:控制器--接受用户输入--用来协调Model和View的关系,并对数据进行操作,筛选
  • 流程:(1)控制器接受用户请求    (2)调用模型、获取数据    (3)控制器将数据展示到视图中

 

MTV

  • 本质上就是MVC,变种
  • Model:同MVC中Model
  • Template:模版--只是一个html,充当的是MVC中View的角色,用来做数据展示
  • Views:视图函数--相当于MVC中Controller

 

Django

  • 基于Python的重量级Web框架,2005年开源,新闻站点--重量级,替开发者想了太多的事情,帮开发者做了很多的选择,内置了很多的功能
  • 使用版本:LTS  长期支持版本LongTimeSupport
  • HelloDjango:(1)虚拟环境--mkvirtualenv  创建虚拟环境(2)deactivate  退出(3)workon  再次进入(4)rmvirtualenv  删除虚拟环境
  • 安装:pip install django--pip install django == x.x.x    或  pip install django == x.x.x -i https://pypi.douban.com/simple
  • 创建项目
    • django-admin startproject XXX
    • 项目结构  manage.py--管理整个项目的文件、以后的命令基本都通过manage.py来调用
    • __init__:初始文件  settings:项目全局配置文件  urls:根路由  wsgl:用在以后项目部署上,前期用不到
  • 启动项目:python manage.py runserver
  1. 使用开发者服务器启动项目
  2. 默认会运行在本机的8000端口上
  3. 还可以添加参数  [ [ip:] port]  0.0.0.0 全部电脑    代表本机所有ip
  • 创建一个应用:
    • python manage.py startapp App   
      • APP结构:(1)__init__初始化(2)views:视图函数(3)models:模型(4)admin:后台管理(5)apps:应用配置(6)tests:单元测试(7)migrations:__init__  迁移目录
      • 第一件事:将应用注册到项目的settings中INSTALLED_APPS中
  • 请求流程:Brower-> urls    urls->views    views->models    models->views    views->response
  • 编写第一个请求
    • 编写一个路由  urlpatterns    url(p1, p2)    p1-正则匹配规则    p2-对应的视图函数
    • 编写视图函数  本质上还是一个函数    只是默认第一个参数是一个request    必须返回一个response--HttpResponse  render选人、简写
  • 连接数据库
    • 默认在django中集成数据库  SQLite  轻量级数据库  没有用户名、密码  常用的场景:Android、IOS、WP
    • 修改数据库:在settings中的DATABASES中进行修改,实际上都是关系型数据库 
      • mysql  驱动  mysqlclient  mysql-python  pymysql:会伪装、install_as_mysqldb()
      • mysql  USER  PASSWORD  HOST  PORT  NAME  ENGINE
    • 迁移:生成迁移  python manage.py makemigrations    执行迁移  python manage.py migrate  才会正在在数据库产生表
  • 数据操作
    • 增删改查
    • 存储数据--创建对象进行save()
    • 数据查询--模型.objects.all()    模型.objects.get()
    • 更新--基于查询  save()
    • 删除--基于查询  delete()
  • 显示在模版中
    • 先挖坑  {{ var }}
    • 再填坑:(1)渲染模版的时候传递上下文进来(2)上下文是有一个字典(3)key就是var,value就是要传入的值
    • 模版的兼容性很强--不传入不会报错,多传入也会自动优化掉
    • 浏览器不认模版--在到达浏览器之前,已经进行了转换,将模版语言转换成了HTML
    • for 支持
  • python manage.py shell  django终端、继承了django环境的python终端、通常用来调试
  • 数据级联:ForeignKey
    • 一对多
    • 多记一
    • 一获取多:多的set(集合)
    • 多获取一:就是一个书写的属性

 

模型关系

  • 1:1
    • 应用场景
      • 应用于复杂表的拆分
      • 扩展新功能
    • Django中OneToOneField
      • 在使用的时候,关系声明还是有细微的差别的
    • 实现
      • 使用外键实现
      • 对外键添加了唯一的约束
    • 数据删除
      • 级联表
        • 主表
        • 从表
        • 谁声明关系谁就是从表
        • 在开发中如何确认主从
          • 当系统遭遇不可避免的毁灭时,只能保留一张表,这个表就是主表
      • 默认特性(CASECADE)
        • 从表数据删除,主表不受影响
        • 主表数据删除,从表数据直接删除
      • PROTECT受保护的
        • 开发中,为了防止误操作,通常会设置为此模式
        • 主表如果存在级联数据,删除动作受保护,不能成功
        • 主表不存在级联数据,可以删除成功
      • SET
        • SET_NULL
          • 允许为NULL
        • SET_DEFAULT
          • 存在默认值
        • SET()
          • 指定值

 

Python内存分配

  • 垃圾回收使用引用计数器
  • id([1, 2, 3]) == id([4, 5, 6])
    • 存在赋值符号 = 才会进行内存划分
    • 没有赋值,直接调用会在临时缓冲区,id获取临时缓冲区的内容,id一样

 

爬虫

  • 模拟人去请求数据
  • 提取数据
  • 存储数据
  • 核心
    • 数据爬去
    • 数据提取  xpath、pyQuery
    • 数据存储
    • 提升效率
      • 进程
      • 线程
      • 协程

你可能感兴趣的:(python)