Django-学习笔记

Django-学习笔记,第1张

web 简单框架功能总结
- urls.py 
    - 路径与视图函数映射关系 ---- url控制器
- views.py
    视图函数, 固定有一个形式参数: environ  -- 视图函数
- templates 文件夹
    html 文件 ----模版
- models
    在项目启动前, 在数据库中创建表结构  --- 与数据库相关
- main.py
    启动文件, 封装了 socket
Django 初始化创建
django-admin startproject prjname
cd prjname
python manage.py startapp app  #  创建子项目
MTV 模式
- M : model
- T : templates
- V : view
目录结构
blog  -- 与应用相关的文件夹
    - admin.py
    - apps.py
    - model.py   ---- 数据库相关
    - views.py   ---- 视图
    - test.py
manage.py       --- Django 相关文件

templates  -- html 文件夹

django_blog  # 跟整个项目相关的 全局配置
    - asgi.py
    - settings.py
    - urls.py  -- 路由控制
    - wsgi.py
url控制总结
url 是 Django程序入口
- 1 url 路径匹配
- 2 匹配成功找到对应视图函数
- 3 有名分组, 将有名的分组变量, 传入视图函数
- 4 分发, 解耦, include 将urls 分发到每一个应用中, 
- 5 反向解析, 给每一个url起一个别名(nickname), 以便于后序更改URL时 只需要更改一个位置
- 6 命名空间, 解决不同应用间命名冲突的问题, include("app.urls", "namespaceName")
        reverse("namespaceName:nickname", args=((args1, args2, ....))
SQL 生成表模型
- python.exe .\manage.py makemigrations 生成表
- python.exe .\manage.py migrate
数据库迁移
# 根据数据库迁移文件生成对应SQL语句并执行
python manage.py migrate  
# 初次执行时为了先把默认Django需要的数据库创建出来
python manage.py makemigrations  # 创建数据库迁移文件
# 这次执行是为了创建app中的class模型类的迁移文件
跨域问题
1 同源策略: 请求的url地址, 必须与浏览器上的url地址处于同域上, 也就是域名, 端口, 协议相同
2 CORS: 跨域资源共享 允许不同的域来我的服务器获取数据  
    csrf: 跨站请求伪造  xss: 跨站脚本攻击
3 CORS 请求分成两类: 简单请求(Simple request) 和 非简答请求(not-so-simple request)
    简单请求:
        (1)请求方法是以下三种方法之一:
            HEAD
            GET
            POST
        (2)HTTP的头信息不超出以下几种字段:
            Accept
            Accept-Language
            Content-Language
            Last-Event-ID
            Content-Type:只限于三个值application/x-www-form-urlencpded、multipart/form-data、
                            text/plain
    # 如果发送post请求, 数据格式是json --> 非简单请求, 非简单请求发两次, 一次 options请求 一次真正的请求
跨域处理
pip install django-cors-headers

- 注册 app : 'corsheaders'
- 配置中间件 : 'corsheaders.middleware.CorsMiddleware',

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
    "*"
)
CORS_ALLOW_METHOD = (
    'DELETE',
    'GET',
    'POST',
    'PUT',
)
CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-wIth',
    'Pragna',
)
前后台打通
# 1 前台可以发送 ajax 的请求 axios
# cnpm install axios
git工作流程
- 工作区
- 暂存区 git add
- 版本库 git commit -m
- 回滚 git checkout  |   git reset HEAD | gie reset -hard 版本号
远程仓库
github   码云(国内)  公司内部 gitlab
git命令
git init 文件夹名  // 文件夹下路径全被管理
git status
git add 文件名   // 将文件提交到暂存区   git add . 添加管理下的全部文件到暂存区
git commit -m '注释'   // 提交到版本库  将暂存区里面的所有文件都提交到版本库  暂存区清空
- 增加作者信息(全局配置)
    git config --global user.email '1@qq.com'
    git config --global user.name 'mc'
- 增加坐着信息(项目配置)
    git config user.email '1@qq.com'
    git config user.name 'mc'
git log   // 查看版本管理日志
git reset --hard 版本号  // 返回指定版本的状态
git reset HEAD .   // 将提交从暂存区拿出来, 基本不会使用
pre-commit
$ pip install pre-commit

$ pre-commit --version
pre-commit 2.1.1

$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
颜色区分
红色   未被管理
绿色   提交到暂存区
忽略文件
- 指定某些文件或者文件夹不被 git 管理
- 在项目根路径, 跟 .git 文件夹一个路径, 新建 .gitignore 在里面配置
- 语法
    -  # 号是注释
    - 文件夹名字  表示文件夹不被管理
    - 空文件夹不被管理
    - .gitignore
        /dist  表示根路径下的dist文件夹不被管理
        *.py  表示后缀名为 py 的文件 都被忽略
        *.log*  日志文件忽略(日志轮转, 不用提交)
分支 *** 作
git branch  查看所有分支  如果是绿色  则表示在当前分支上
git branch 分支名       创建分支
git checkout 分支名     切换分支
git branch -d 分支名    删除分支  必须切换到其他分支才能删除当前分支 
git checkout -b 分支名  创建并切换到分支
git merge 分支名        合并分支 
    eg: 将 dev 分支合并到 master分支, 切换到master分支 执行合并dev分支的命令
出现冲突的两种情况
- 分支合并
- 两个分支更改了同一文件的同一行
    - 第一个提交的没有事情
    - 第二个提交的会出现冲突
冲突解决
- 协同开发出现冲突, 如何解决
    1 删除你的代码
    2 删除他们的代码
    3 合并你们的代码
- 合并分支出现的冲突
    分支: 本地分支 远程分支
    冲突一
        2 创建本地分支  git checkout -b dev
        3 将本地分支提交到远程 git push origin dev 
    冲突二
        - dev_bug 分支改了文件
        - dev  改了同样的文件同样的位置
        - 合并 ===> 冲突
        - git merge dev_bug     // 在dev上 *** 作
        - 解决冲突 分析冲突代码 保留最后代码
        - git add.  git commit
        - 冲突解决
    冲突三 
        - 线上合并分支出现问题 只能 👇
        - 手动先下合并代码并提交到远程
        - 解决方法同冲突二
git 远程连接
- 码云(国内, 连接块)
- 注意: 新建仓库的时候 不要勾选 read 初始化仓库
对称加密和非对称加密
对称加密  加密和解密用同一套密码
非对称加密 公钥和私钥
    公钥 加密
    私钥 解密
ssh  生成一对公钥和私钥
redis 安装与配置
# https://blog.csdn.net/weixin_41381863/article/details/88231397
# 默认端口 6379
简单命令
# redis-cli  进入客户端
# select 1   进入 1 数据库 (默认0-15)

# set 变量名  值    ==> 设值
# get 变量名       ==> 取值
# setex 变量名 时间长度 值     ==> 设置值, 值可以存在 设定时间长度 单位秒
# ttl 变量名   ==> 查看setex 剩余的时间长度, 如果没有时间长度 则返回 -2
# get 不存在的变量名  返回 (nil) 类似于 None
# expire 存在时间长度的值 新的时间长度   ===> 设置存在时间长度的值以新的时间长度
# mset 键1 值1 键2 值2 .... ===>同时设置多个值
# mget 键1 键2 ....   ==> 同时获取多个值
# keys *   ==> 查看现在的所有的键
# keys partern  ==> 支持简单的正则 
# exists 键  ===> 键 是否存在  存在返回 1 不存在返回0  注意这里返回的是数值型
# del 键  ==> 删除键
# type  ==> 查看类型

# hash
    hset 域名 键 值   ==> hash域中添加一个键值对, 如果已存在键则修改值
    hdel 域名 键 值   ==> hash域中删除一个键值对
    hkeys 域名       ==> 查看域中所有键
    hvals 域名       ==> 查看域中所有值
    hget 域名 键     ==>  获取域中键对应的值
    hmget  hmset   同上同理

# list
    lpush 列表名 值1 值2 .....  ==> 将值存入列表 每一次从左侧插入  即 插入值1 => 插入值2后 => 值2 值1
    rpush 列表名 值1 值2 .....  ==> 将值存入列表 每一次从右侧侧插入
    linsert 列表名  after/before 存在的值 新插入的值  ==> 在存在的值后面或者前面插入新值 
        # 如果存在多个一样的值 则找到第一个值就进行 *** 作 然后结束
    lset 列表名 下标 值  ==> 修改列表中对应下标的值
    lrem 键 count(次数) 值    ==> 将列表中前 count 次出现的值为对应值为 value 的元素移除
        count > 0 从头往尾移除
        count < 0 从尾往头移除
        count = 0 移除所有
    lrange 列表名 起始位置 终止位置   ==> 查看列表从起始位置到终止位置的元素 
        # 查所有  lrange 列表名 0 -1

# set
    sadd 集合名 值1 值2 .....  ==> 添加元素  会自动将重复值合并(不一定时合并, 但是会去重)
    sermbers 集合名   ==> 查出集合中所有的元素 (乱序)
    srem 集合名 值    ==> 删除值
数据类型
1.string类型:
    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,也就是byte类型
    最大容量是512M。
2.hash类型:
    hash用于存储对象,对象的结构为属性、值,值的类型为string.
    key:{
        域:值[这里的值只能是字符串],
        城:值,
        域:值,
        域:值,
        ....
        }
3.list类型:
    列表的元素类型为string.
    key:[值1,值2,值3......]
4.set类型:
    无序集合,元素为string类型,元素唯一不重复,没有修改 *** 作。
    {值1,值4,值3,值5}
5.zset类型:
    有序集合,元素为string类型,元素唯一不重复,没有修改 *** 作。
    key :{
        value : weight
        value : weight
    }
    根据 weight 进行排序

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/875444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存