luffy__导出项目依赖,,软件开发模式,,git介绍和安装,,git gitlab gitee github介绍 ,,git使用流程__常用命令,,get log和gir reglog区别,,版本回退 git reset-hard,,git忽略文件,,多分支

上节回顾

# 1 二次封装Respons
    -djang:4个
    -drf:Response
    -自己封装
# 2 封装5个视图扩展类

# 3 开启media访问
    -1 配置加入下面--->上传文件(ImageField,FileField),会自动传到 media文件夹下的 to的路径
     MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
     MEDIA_URL = 'media/'
    -2 在总路由中配置
    path('media/<path:path>', serve, kwargs={'document_root': settings.MEDIA_ROOT}),
    127.0.0.1:8000/media/banner/a.png
    path:  banner/a.png---->document_root配置的目录去找文件
    
    
    
# 4 vue create luffy_city
    -vue-router
    -vuex
    -vue2
    
# 5 前端配置
    -1 配置全局样式--》标签都有默认样式
    -2 配置全局settings--》导出一个对象,对象中放了BASE_URL
        -放到
        import settings from "@/assets/js/settings";
        Vue.prototype.$settings = settings
        -以后通过  this.$settings.BASE_URL
        
    -3 安装并使用axios
        -1 安装
        -2 放到原型中
            import axios from "axios";
            Vue.prototype.$axios = axios
            
        -3 拦截器  http/index.js
        
        
    -4 使用elementui
    -5 使用 bootstrap5
        - 安装:cnpm install bootstrap@5
        - main.js配置
        import 'bootstrap/dist/css/bootstrap.min.css'
        -以后跟之前用bootstrap一样
        
    -6 bootstrap-vue---组件
    
    -7 vue-cookies
        -main.js中
        import cookies from 'vue-cookies'
        Vue.prototype.$cookies = cookies;    
        -以后再任意组件中
        this.$cookies.set
        this.$cookies.get
        
# 6 axios 拦截器写法
    1 http/index.js  看下面
    2 main.js中配置
    import axios from '@/http'
    Vue.prototype.$axios = axios
    3 使用
     this.$axios.get('/home/banner/').then(res => {
      this.bannerList = res.results
    })

        
# 7 后台主页功能
    -查询所有轮播图接口
# 8 用户自定义配置---》所有配置文件必须大写
    from .common_settings import *
    # 以后用:
    from django.conf import settings
    Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_COUNT]
    
    问? 如果自定义配置中得变量是小写的,以后能这么用吗?  # 不能!!!!!
    #common_settings.py
    name='lqz'
    # 以后能这样取吗?
    from django.conf import settings
    settings.name
    
    
# 9 前端首页
    -Header.vue--->布局有问题
        -.nav {
            display: block;
        }
    -Footer.vue
    -Banner.vue--》跳转的路径可能是自己的,也可能是外部
    -HomeView.vue
    
    -flex 布局
    
# 10 跨域问题
    -浏览器的同源策略
        -当前 域 :协议[http/https/ftp] ,地址[ip地址,域名],端口
    -解决跨域
        -cors:跨域资源共享:响应头中加入东西       
            -代码
            -nginx
        -jsonp技术
        -前端代理(测试阶段会用)
   -自己解决:中间件---》通用方案
   -第三方:只能用在django中

        
# 11 
xss:跨站脚本攻击
csrf:跨站请求伪造
cors:跨域资源共享
import axios from "axios";
import router from "../router";
import Element from "element-ui"

axios.defaults.baseURL = "http://127.0.0.1:8000/api/v1"

//创建请求对象
//指定超时时间为5000毫秒
//指定请求头中编码格式为application/json
const request = axios.create({
    timeout: 5000,
    headers: {
        'Content-Type': "application/json; charset=utf-8"
    }
})

//在请求发出之前进行拦截,
// 从localStorage中取出token携带在请求头中
request.interceptors.request.use(config => {
    config.headers['Authorization'] = localStorage.getItem("token")
    return config
})


//在请求响应后进行拦截,
// 如果响应数据中的status为100,表示成功,不做处理,如果不是100,使用elementui显示错误信息
// 如果响应对象的状态码为401,重定向到登陆页面,只要有错误,就打印错误信息
request.interceptors.response.use(
    response => {
        console.log("response ->" + response)
        let res = response.data
        if (res.code === 100) {
            return response.data
        } else {
            Element.Message.error(!res.msg ? '请求服务器异常,请联系管理员' : res.msg)
            return Promise.reject(response.data.msg)
        }
    },
    error => {
        console.log(error)
        if (error.response.data) {
            error.massage = error.response.data.msg
        }
        if (error.response.status === 401) {
            router.push("/login")
        }
        Element.Message.error(error.massage, {duration: 3000})
        return Promise.reject(error)
    }
)

export default request

今日内容

导出项目依赖

# 以后项目给别人---》项目装了哪些模块[模块版本]--》别人用是不知道的---》需要导出项目依赖---》放在项目路径下---》以后在运行项目前--》先安装依赖[版本号要对应]


# 一般约定俗成都叫 requirements.txt,但是会有别的
    req.txt
    dev.txt
# 两种方式:
    1 虚拟环境---》所有装的第三方,都应该是该项目的依赖---》直接导出虚拟环境的所有第三方模块即可
        pip freeze  > requirements.txt
    2 不需要管是虚拟环境还是真实环境---》只会导出项目的依赖
        pip install pipreqs
        pipreqs . --encoding=utf-8
        # 如果不全,手动补一下

软件开发模式

# 1 瀑布开发
    -软件设计---》分任务开发[很久]---》测试--》上线
# 2 敏捷开发
    -软件分板块--》
        版块设计[用户]---》分任务开发---》测试-->上线
        版块设计[订单]---》分任务开发---》测试-->上线
        版块设计[商品]---》分任务开发---》测试-->上线
    -整体测试
    -上线

git介绍和安装

# 软件开发一个功能后---》把代码提交到某个位置---》大家都能拿到

# 首页功能开发完了--->提交到git

# 现在存在的问题
    1 多人在同一项目上开发---》代码合并--》多人协同开发
    2 做版本管理--》版本回退,查看。。。
    
# SVN 、 GIT 能完成上述操作
    -svn 比较老,用的公司不多
    -git比较流行

# git是什么?
    版本控制[软件] - 控制的对象是文件
# 下载:
    https://git-scm.com/downloads
    -win:Git-2.43.0-64-bit.exe 下载,一路下一步安装即可
    -mac:双击安装
    
    
    -安装完成:点右键,多出两个命令
        git bash here # 会常用
        git gui here # 用的少
    -打开命令行:
        git -v

git gitlab gitee github介绍

# git
  -软件,做版本管理的,分不同平台(win,mac)
# github
  -网站,git远程代码仓库,全球最大的开源代码托管平台,全球最大的开源代码仓库
# gitee(小公司,私有仓库)
  -国内最大的开源代码托管平台

# gitlab(公司内部这个多)
  -公司内部的远程仓库


# bitbucket 给公司做代码托管的,没有开源

git使用流程

# git 有三个区
    工作区:某个文件夹,在文件夹  新增,修改,删除,更新 文件--》用户操作的位置
    暂存区:工作区的变更---》提交到暂存区
    版本库:把暂存区内容---》提交到版本库---》文件就被版本管理了--》回退到某个版本
    远程仓库:第三方:github,gitee,gitlab
    
# 工作流程:三个区的来回操作

# 常用命令
    1 初始化仓库:git init   # 创建出一个  .git 文件夹--》不要删,删除仓库记录都没了
        新建文件夹:lqz ---》git bash here---》打开termial--》输入linux命令
        ls
        mkdir
    2 查看仓库状态
        git status
    3 在工作区,新建 s1.py,加入一行代码
    
    4 把变更提交到暂存区
        git add 文件名 # 提交当前文件的变更
        git add . # 所有变更都提交
        
    5 把暂存区提交到版本库
        git commit -m '注释,必须加' 
        
    6 查看版本记录
        git log
        git reflog
    
    -----了解----------
    
    6 git checkout .  # 把工作区变更回退(还没放到暂存区)
    
    7 git reset --soft 版本号  # 唯一表示,可以不写全,短一些
    git reset --soft 05125c7 # 上一个版本号
    
    8 git reset --mix  2b8766f767 # 把版本库拉回到工作区

git常用命令

# 1 初始化仓库  ---仓库目录下会出现 .git 文件夹--》文件夹千万不要删除
git init   # 初始化当前文件夹
git init 文件夹 # 在当前文件夹下创建文件夹,并把新创建的文件夹作为仓库
# 2 查看仓库状态
git status 
git status -s  #查看仓库状态的简约显示
# 红色:工作区有变更,但是没有提交到暂存区  
# 绿色:工作区变更提交到暂存区,但是没有提交到版本库---》还没有被版本管理起来
# 白色:所有变更都被版本管理了

# 3 把工作区变更提交到暂存区
git add 文件名 文件夹
git add .  # 所有变更

# 4 把暂存区提交到版本库
git commit -m '注释'    # 只要提交一次,就会有个版本号,以后根据版本号我们可以回退到任意版本

# 5 设置用户名和邮箱--》一般写在git init之后,只设置一次
    # 全局设置
    git config --global user.name '用户名'
    git config --global user.email '用户邮箱'
    # 局部设置:
    git config user.name 'xxx'
    git config user.email '4@qq.com'
    
    
# 6 查看版本日志  
    git log   # 能看到用户:lqz <3306@qq.com>
    git reflog
    
   

----------了解-------------
# 7 撤销工作区变更
 git checkout .
    -- 撤销所有暂存区的提交
git checkout 文件名
    -- 撤销某一文件的暂存区提交

# 8 撤销暂存区提交:add的逆运算
    >: git reset HEAD .
        -- 撤销所有暂存区的提交
    >: git reset 文件名
        -- 撤销某一文件的暂存区提交
        
# 9 git log 更多
  查看时间点之前|之后的日志:
        >: git log --after 2018-6-1
        >: git log --before 2018-6-1
        >: git reflog --after 2018-6-1
        >: git reflog --before 2018-6-1
    查看指定开发者日志
        >: git log --author author_name
        >: git reflog --author author_name
# 10 回滚到指定版本:
        回滚到上一个版本:
            >: git reset --hard HEAD^
            >: git reset --hard HEAD~
        回滚到上三个版本:
            >: git reset --hard HEAD^^^
            >: git reset --hard HEAD~3
        回滚到指定版本号的版本:
            >: git reset --hard 版本号 (重点)
            >: eg: git reset --hard 35cb292

git log和git reflog区别

# git log
commit 7884b345a03ec8a1dfae5976d3e1c4ec55a2f785 (HEAD -> master) #  版本号
Author: xxx <4@qq.com>  # 作者
Date:   Mon Jan 22 12:29:13 2024 +0800 # 日期
    xxx              # 注释
# 如果做了代码回撤---》这里的日志看不到,就通过git reflog来查看

版本回退 git reset --hard

回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号 (重点)
>: eg: git reset --hard 35cb292


# 只要是被版本管理了,后期我们可以回退到任意版本

git忽略文件

# 在仓库中,某些文件或文件夹,不期望被git管理,不被版本管理
    -node_models
    -.idea
    -.vscode
    -__pycache__ :为了加快执行效率---》解释器会把py文件,只要执行过,就编译成views.cpython-38.pyc---》以后再运行,直接运行这个文件,速度快
    -项目的日志文件 
    
    
# 在仓库目录下新建一个文件:.gitignore
    标明哪些不被git管理,标明语法如下:
    -如果是文件,直接写文件名
    -如果是文件夹,直接写文件夹名
    
# 具体如下
""" 过滤文件内容
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)


注意:
# 以'#'开始的行,被视为注释.                                                                                                                          
# 忽略掉所有文件名是 lqz.txt的文件.
    lqz.txt
# 忽略所有生成的 html文件,
*.html
# lqz.html是例外,不在忽略范围内
!lqz.html
# 忽略所有.o和 .a文件.
*.[oa]

"""


## 后端项目的忽略文件
luffy.log
__pycache__
*.pyc

.idea
scripts
.vscode
**/migrations/*.py
!**/migrations/__init__.py




#### 空文件夹不被git管理

log
  __init__.py
  luffy.log
 
    
    
*.log

git 多分支

# 以后再创建分支之前---》先保证 所有文件都被git管理起来

# 1 创建分支
    git branch dev  # 创建一个dev分支
# 2 查看分支
    git branch
    * master  # 只有一个master分支

# 3 切换分支
    git checkout dev  # 切换到dev分支
    
# 4 删除分支(不能自己删自己)
    git branch -d dev

# 5 合并分支
    -切换到master上
    -git merge dev  # 把dev合并到当前分支

git远程仓库

# 远端的一个服务器
    -github
    -gitee:讲课----gitlab  
    
# 注册gitee账号
# 新建仓库
# 在本地执行
git config --global user.name "liuqingzheng"
git config --global user.email "306334678@qq.com"
# 已有仓库
cd lqz
git remote add origin https://gitee.com/liuqingzheng/lqz2.git # 添加远程仓库地址
git push  origin master

 

posted @ 2024-01-22 15:12  拆尼斯、帕丁顿  阅读(16)  评论(0)    收藏  举报