刘沙河 刘沙河
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希

花开半夏,半夏花开
首页
  • Go语言基础

    • 数据类型
    • 反射
    • Go指针
  • Go语言进阶

    • go泛型
    • go条件编译
    • cgo教程
    • Go协程调度原理及GPM模型
    • Go内存管理
    • Go垃圾回收机制
    • Go语言内存对齐
  • Go语言实现原理

    • channel 实现原理
    • slice 实现原理
    • map 实现原理
    • sync.Mutex 实现原理
    • 乐观锁CAS 实现原理
    • singlefight 实现原理
  • gin框架

    • gin中间件原理
    • gin路由原理
  • gorm

    • GORM介绍和使用
    • GORM_CURD操作指南
  • go测试

    • benchmark基准测试
    • pprof 性能分析
  • python进阶

    • Numpy&Pandas
    • celery分布式任务队列
  • Django

    • Django 常见命令
    • middleware中间件
    • Django缓存系统
    • Django信号系统
    • Django REST Framework
  • Flask

    • Flask基础知识总结
    • Flask-SQLAlchemy
  • 爬虫

    • aiohttp
    • scrapy框架
  • Mysql

    • Mysql存储引擎和索引
    • MySQL主从复制
    • Mysql读写分离
    • 数据库分库分表
    • Mysql锁
    • Mysql事务和MVCC原理
    • 分库分表带来的读扩散问题
  • Redis

    • redis基础和数据类型
    • redis主从架构
    • redis哨兵架构
    • redis集群模式
    • 如何保证缓存和数据库双写一致
    • redis底层数据结构
    • redis分布式锁
  • Elasticsearch

    • es基本概念
    • es基础语法
    • es倒排索引
  • etcd

    • Go操作etcd
    • Raft原理
    • etcd分布式锁
  • kafka

    • 消息队列MQ总结
    • kafka 概述及原理
    • kafka 消费问题记录
    • 零拷贝技术
    • kafka分区规范
  • RabbitMQ

    • rabbitMQ基础
    • Go操作rabbitmq
  • RocketMQ

    • 可靠消息队列 rocketMQ
  • Http&Https

    • http&https
    • TCP和UDP
    • Ping 原理
  • RPC

    • RPC初识
    • grpc初识和实现
  • gRPC

    • grpc 初识
    • grpc 上下文 metadata
    • grpc 健康检查
    • grpc keepalive
    • grpc 命名解析
    • grpc 中间件&拦截器
    • grpc 负载均衡
    • grpc 身份认证
    • grpc 超时重试
    • grpc 链路追踪
    • grpc-gw将gRPC转RESTfu api
    • grpc-gw自定义选项
  • protobuf

    • protobuf 进阶
    • protobuf 编码原理
  • Docker

    • Docker基础
    • Docker常用命令
    • Dockerfile
    • Docker-Compose
    • Docker多阶段构建
    • Docker Config 教程
    • Docker Swarm 教程
    • Docker Stack 教程
    • Docker Buildx 教程
  • k8s

    • k8s 基础概念
    • k8s 集群架构
    • k8s 工作负载
    • Pod 网络
    • Service 网络
    • 外部接入网络
    • 一张图搞懂k8s各种pod
    • k8s 存储抽象
    • mac快速启动k8s
    • 自制申威架构k8s-reloader
  • go-kit

    • go-kit初识
    • go-kit启动http服务
    • go-kit集成gin启动服务
    • go-kit集成grpc和protobuf
    • go-kit中间件
    • go-kit服务注册发现与负载均衡
    • go-kit限流和熔断
    • go-kit链路追踪
    • go-kit集成Prometheus
  • 设计模式

    • 初识设计模式
    • 创建型模式
    • 结构型模式
    • 行为模式
  • 数据结构

    • 时间轮
    • 堆、双向链表、环形队列
    • 队列:优先队列
    • 队列:延迟队列
  • 算法

    • 递归算法
    • 枚举算法
    • 动态规划
    • 回溯算法
    • 分治算法
    • 贪心算法
    • LRU和LFU
    • 一致性哈希
  • Python基础

  • Python进阶

  • Python并发编程

  • Django

    • django 常见命令
      • Django模板母版
      • Django视图
      • Django路由系统
      • Django--orm系统-指令&属性
      • Django--orm系统 -分组聚合
      • Django-cookie&session
      • middleware中间件
      • Django 的身份认证系统
      • Django models 之字段详解
      • Django缓存系统
      • Django数据库系统
      • Django信号系统
      • Django序列化和反序列化
      • Django中admin用法
      • DRF 版本、认证、权限、限制、解析器和渲染器
      • DRF(Django REST Framework)框架
    • Flask

    • 爬虫

    • Python
    • Django
    bigox
    2021-03-22
    目录

    django 常见命令

    # 1.django的命令

    下载安装

    • pip install django==1.11.21 -i 源

    创建项目

    • django-admin startproject 项目名称

    启动

    • cd 项目的根目录下 manage.py

    • python manage.py runserver # 127.0.0.1:8000

    • python manage.py runserver 80 # 127.0.0.1:80

    • python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80

    创建APP

    • python manag.py startapp app名称

    数据库迁移的命令

    • python manage.py makemigrations # 记录models.py的变更记录

    • python manage.py migrate # 迁移 将变更记录同步到数据库中

    # 2.django的配置

    静态文件

    STATIC_URL = '/static/'

    STATICFILES_DIRS=[

    ​ os.path.join(BASE_DIR,‘static’),

    ​ os.path.join(BASE_DIR,‘static1’),

    ]

    数据库 DATABASES

    ENGINE 引擎

    NAME 数据库的名称

    HOST IP '127.0.0.1'

    PORT 端口号 3306

    USER 用户名

    PASSWORD 密码

    app注册

    INSTALLED_APPS

    'app01'

    'app01.apps.App01Config'

    中间件

    注释 'django.middleware.csrf.CsrfViewMiddleware' 可以提交POST请求

    TEMPLATES

    'DIRS': [os.path.join(BASE_DIR, 'templates')]

    # 3.django使用MySQL数据库的流程

    1.创建一个MySQL数据库;

    2.在settings中配置数据库;

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day53',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123'
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    3.让django使用pymysql连接MySQL数据库

    在与settings同级目录下的init 中写:

    import pymysql
    pymysql.install_as_MySQLdb()
    
    1
    2

    4.创建表 在app下的models.py中写类(继承models.Model)

    from django.db import models
    
    class User(models.Model):   # app名称_user
        #单表创建字段
        data=models.DataField() #设置时间
        pid = models.AutoField(primary_key=True)  # 自动生成序号
        username = models.CharField(max_length=32)   # username varchar(32) 设置普通的字段
        password = models.CharField(max_length=32)   # password varchar(32)
        
        #一对多创建字段
        pub=models.Foreignkey('要关联的表名' ,on_delete= models.CASCASDE) #设置外键 on_delete级联删除on_delete  在django 2.0 版本之后是必填的参数    1.11  之前的可以不填 
        
        #多对多创建字段
        books=models.ManyToManyField('要关联的表') #多表关联,会自动生成第三张表,然后根据另外两张表的表明生成'表名_id'字段
        
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    5.执行数据库迁移的命令

    python manage.py makemigrations # 记录models.py的变更记录

    python manage.py migrate # 迁移 将变更记录同步到数据库中

    # 4.get和post

    get 获取到一个资源

    发get的途径:

    1.在浏览器的地址栏种输入URL,回车

    2.a标签

    3.form表单 不指定 method method=‘get’

    传递参数 url路径?id=1&name=alex

    • django种获取url上的参数 request.GET {'id':1,'name':'alex'}
      • request.GET.get(key) request.GET[key] 单选获取,返回字符串
      • request.GET.getlist(key) 多选框获取列表
      • F=request.FILES.get('f') 根据文件名获取上传文件对象
        • F.chunks() 获取文件

    post 提交数据.

    form表单 method=‘post’

    参数不暴露在URL 在请求体中

    django中获取post的数据 request.POST

    # 5.ORM

    对应关系

    类 —— 》 数据表

    对象 ——》 数据行(记录)

    属性 ——》 字段

    from app01 import models

    #orm创建数据库表格
    
    
    #一对多
    mofels.Foreignkey('要关联的表名' ,on_delete=) 设置外键
    '''
    - on_delete 的参数
      - 默认是models.CASCASDE 级联删除
      - models.SET()  / models.SET_DEFAULT  / models.SET_NULL
    - on_delete  在django2.0 版本之后是必填的参数    1.11  之前的	可以不填 
    '''
    #多对多
    models.ManyToManyField('要关联的表')
    
    - 多表关联,会自动生成第三张表,然后根据另外两张表的表明生成'表名_id'字段
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    • datafield
      • 在数据库中创建一个时间对象

    查:

    models.Publisher.objects.all() ——》 查询所有的数据 queryset 对象列表

    models.Publisher.objects.get(name='xxxx') ——》 对象 获取不到或者获取到多个就报错

    models.Publisher.objects.filter(name='xxxx') ——》 获取满足条件的所有的对象 queryset 对象列表

    • 一对多查询

      all_books = models.Book.objects.all()
      
      for book in all_books:
          print(book.title)
          print(book.pub,type(book.pub))   #  ——> 所关联的出版社对象
          print(book.pub.pk)  #  查id 多一次查询
          print(book.pub_id)  # 直接在book表中查出的ID
          print(book.pub.name)
          print("*"*32)
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
    • 多对多查询

      for author in all_authors:
          print(author)
          print(author.pk)
          print(author.name)
          print(author.books,type(author.books)) # author.books是关系管理对象
          print(author.books.all(),type(author.books.all()))  #获取所有book相关的对象,返回的是一个对象列表
          print('*'*30)
      
      1
      2
      3
      4
      5
      6
      7

    增:

    models.Publisher.objects.create(name='xxx') ——》 新插入数据库的对象

    obj = models.Publisher(name='xxx') ——》 存在在内存中的对象

    obj.save() ——》 提交到数据库中 新增

    删:

    obj = models.Publisher.objects.get(pk=1)

    obj.delete() #单个对象删除

    obj_list = models.Publisher.objects.filter(pk=1)

    obj_list.delete() #多个对象批量删除

    改:

    • obj = models.Publisher.objects.get(pk=1)

    • obj.name = 'new name' ——》 在内存中修改对象的属性

    • obj.save() ——》 提交数据 保存到数据库中

    • author_obj.books.set(books) # 多对多关系时,每次直接重新设置

    #Python#
    上次更新: 2023/04/16, 18:35:33
    协程
    Django模板母版

    ← 协程 Django模板母版→

    最近更新
    01
    go与http代理
    05-24
    02
    自制申威架构k8s-reloader
    12-06
    03
    Docker Buildx 教程
    12-01
    更多文章>
    Theme by Vdoing | Copyright © 2020-2024 小刘扎扎 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式