上节回顾
-djang:4个
-drf:Response
-自己封装
-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配置的目录去找文件
-vue-router
-vuex
-vue2
-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
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
})
-查询所有轮播图接口
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]
问? 如果自定义配置中得变量是小写的,以后能这么用吗?
name='lqz'
from django.conf import settings
settings.name
-Header.vue--->布局有问题
-.nav {
display: block;
}
-Footer.vue
-Banner.vue--》跳转的路径可能是自己的,也可能是外部
-HomeView.vue
-flex 布局
-浏览器的同源策略
-当前 域 :协议[http/https/ftp] ,地址[ip地址,域名],端口
-解决跨域
-cors:跨域资源共享:响应头中加入东西
-代码
-nginx
-jsonp技术
-前端代理(测试阶段会用)
-自己解决:中间件---》通用方案
-第三方:只能用在django中
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"
const request = axios.create({
timeout: 5000,
headers: {
'Content-Type': "application/json; charset=utf-8"
}
})
request.interceptors.request.use(config => {
config.headers['Authorization'] = localStorage.getItem("token")
return config
})
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
今日内容
0 导出项目依赖
req.txt
dev.txt
1 虚拟环境---》所有装的第三方,都应该是该项目的依赖---》直接导出虚拟环境的所有第三方模块即可
pip freeze > requirements.txt
2 不需要管是虚拟环境还是真实环境---》只会导出项目的依赖
pip install pipreqs
pipreqs . --encoding=utf-8
1 软件开发模式
-软件设计---》分任务开发[很久]---》测试--》上线
-软件分板块--》
版块设计[用户]---》分任务开发---》测试-->上线
版块设计[订单]---》分任务开发---》测试-->上线
版块设计[商品]---》分任务开发---》测试-->上线
-整体测试
-上线
1 git介绍和安装
1 多人在同一项目上开发---》代码合并--》多人协同开发
2 做版本管理--》版本回退,查看。。。
-svn 比较老,用的公司不多
-git比较流行
版本控制[软件] - 控制的对象是文件
https://git-scm.com/downloads
-win:Git-2.43.0-64-bit.exe 下载,一路下一步安装即可
-mac:双击安装
-安装完成:点右键,多出两个命令
git bash here
git gui here
-打开命令行:
git -v
2 git gitlab gitee github介绍
-软件,做版本管理的,分不同平台(win,mac)
-网站,git远程代码仓库,全球最大的开源代码托管平台,全球最大的开源代码仓库
-国内最大的开源代码托管平台
-公司内部的远程仓库
3 git使用流程
工作区:某个文件夹,在文件夹 新增,修改,删除,更新 文件--》用户操作的位置
暂存区:工作区的变更---》提交到暂存区
版本库:把暂存区内容---》提交到版本库---》文件就被版本管理了--》回退到某个版本
远程仓库:第三方:github,gitee,gitlab
1 初始化仓库:git init
新建文件夹: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
4 git常用命令
git init
git init 文件夹
git status
git status -s
git add 文件名 文件夹
git add .
git commit -m '注释'
git config --global user.name '用户名'
git config --global user.email '用户邮箱'
git config user.name 'xxx'
git config user.email '4@qq.com'
git log
git reflog
----------了解-------------
git checkout .
-- 撤销所有暂存区的提交
git checkout 文件名
-- 撤销某一文件的暂存区提交
>: git reset HEAD .
-- 撤销所有暂存区的提交
>: git reset 文件名
-- 撤销某一文件的暂存区提交
查看时间点之前|之后的日志:
>: 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
回滚到上一个版本:
>: 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
4.1 git log和git reflog区别
commit 7884b345a03ec8a1dfae5976d3e1c4ec55a2f785 (HEAD -> master)
Author: xxx <4@qq.com>
Date: Mon Jan 22 12:29:13 2024 +0800
xxx
4.2 版本回退 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
5 git忽略文件
-node_models
-.idea
-.vscode
-__pycache__ :为了加快执行效率---》解释器会把py文件,只要执行过,就编译成views.cpython-38.pyc---》以后再运行,直接运行这个文件,速度快
-项目的日志文件
标明哪些不被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
log
__init__.py
luffy.log
*.log
6 git 多分支
git branch dev
git branch
* master
git checkout dev
git branch -d dev
-切换到master上
-git merge dev
7 git远程仓库
-github
-gitee:讲课---》
-gitlab
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
上节回顾
- 协同开发---》多人开发同一个项目,代码合并
- 版本管理---》文件版本管理
-软件:分布式的版本管理
-svn:集中式版本管理
必须借助于服务端,每个人用客户端
-win:一路下一步
-右键--》git bash here--》linux命令
-ls
-mkdir
-touch
-cd
-mac:xx.dmg ,双击安装
-打开命令行
-命令行中:
git -v
-工作区:目录,仓库,对文件进行操作
-暂存区:工作区变更提交到暂存区
改一个功能--》改了好几个文件---》不要add 与这个功能无关的文件
-版本库:把暂存区内容提交到版本库
-git init
-git status
- 设置账号和邮箱
git config --global user.name "liuqingzheng"
git config --global user.email "306334678@qq.com"
-git add 文件
-git commit -m '注释'
-查看日志
git log
git reflog
------------------------------------------------
-git checkout .
-git reset HEAD
-版本库拉回到暂存区:git reset --soft 上一个版本号
-版本库拉回到工作区 git rest --mix 上一个版本号
-本地版本回退:git rest --hard 回退的版本号
-一个仓库中,有些文件或文件夹,不希望被版本管理
-仓库目录下新建 .gitignore
-查看:git branch
-创建:
git branch 分支名
git checkout -b 分支名
-切换
git checkout 分支名
-删除
git branch -d 分支名
-合并
git merge 分支
-github,gitlab,gitee
-在gitee创建账号---》新建仓库--》把本地仓库内容,提交到远端
-空仓库
-本地仓库跟远程空仓库建立链接
-git remote add origin https://gitee.com/liuqingzheng/lqz2.git
-git 远端 增加 别名 地址
-本地版本推导远端
git push origin master
git 推 地址 远端的master 把本地当前分支
今日内容
1 ssh链接远程仓库
1.1 远程仓库命令
1)查看仓库已配置的远程源
>: git remote
>: git remote -v
2)查看remote命令帮助文档
>: git remote -h
3)删除远程源
>: git remote remove 源名
eg: git remote remove origin
4)添加远程源
>: git remote add 源名 源地址
>: git remote add orgin https://gitee.com/liuqingzheng/app01.git
5)提交代码到远程源(以后会经常用)
>: git push 源名 分支名
6)克隆远程源(以后会经常用)
>: git clone 远程源地址
7)从远程仓库拉去代码(以后会经常用)
>: git pull 源名 分支名
1.2 使用ssh链接远程仓库
git remote add orgin https://gitee.com/liuqingzheng/app01.git
-本地机器 保留 私钥
-在远程仓库配置 公钥
-远程仓库地址,就不是http的了,而是
git@gitee.com:liuqingzheng/lqz2.git
https://gitee.com/liuqingzheng/lqz2.git
1 cmd/git bash here 命令窗口中执行
ssh-keygen -t ed25519 -C "306334678@qq.com"
2 在操作系统用户--家路径--》.ssh文件夹---》公钥私钥
id_ed25519.pub
id_ed25519
3 去gitee配置公钥
https://gitee.com/profile/sshkeys
ssh -T git@gitee.com
4 以后可以免密操作
5 增加一个远程仓库地址:指定是ssh链接
git remote add origin git@gitee.com:liuqingzheng/lqz2.git
6 把代码推送到远端
git push origin master
-公司里用ssh居多
1 要么自己注册,公司给你注册好了---》账号密码和gitee地址
2 登录到gitee上,能看到一个项目(别人创建的,但你是开发者,你能看到)
2.1 本地生成ssh公钥和私钥--->把公钥配置在gitlab
2.2 继续后续操作
3 把代码拉取到本地(已经配置好了ssh公钥和私钥)
git clone git@gitee.com:liuqingzheng/lqz2.git
4 修改代码,加代码
5 本地提交
6 推送到远端
-0 编码:
base64
url编码和解码
-1 摘要算法
md5
sha1
-3 对称加密
加密和解密使用同样的秘钥
DES
3des
aes
-4 非对称加密
加密使用一个秘钥,解密使用另一个秘钥:公钥和私钥
公钥加密---》私钥解密
RSA
DSA
2 协同开发
2.1 本地代码推送到远程仓库—>你是项目创建者
-1 远程仓库是空的
-2 远程仓库不是空(对钩可以点了)
-1 远端创建一个不为空的仓库
-2 在本地拉取
git clone git@gitee.com:liuqingzheng/luffy_api.git
-3 在拉取的仓库中加代码(我们直接复制过来的)
-4 写好忽略文件
-5 git add .
-6 git commie -m '我的第一次'
-7 git push origin master
-8 以后都开发当时拉下来这个文件夹
如果某个文件或文件夹已经被版本管理了,后期再设置忽略,就无效了
-如何让它再被忽略呢?
-把这个文件删除后,以后就被忽略了
2.2 本地拉取代码–》你是项目参与者–》大概率都是这个角色
-有代码,项目也能运行
-git clone git@gitee.com:liuqingzheng/luffy_api.git
mkvirtualenv -p python38 luffy001
pip install -r requirements.txt
2.2 协同开发演示
git clone https://gitee.com/liuqingzheng/luffy_api.git
修改 user 的app下 __init__.py,写入
print("hello world")
git add .
git commit -m ''
git push origin master
------先提交的----
git clone https://gitee.com/liuqingzheng/luffy_api.git
修改 user 的app下 __init__.py,写入
print("lqz")
git add .
git commit -m ''
git push origin master
git pull origin master
git add .
git commit -m '处理问题'
git push origin master
3 冲突解决
-1 多人在同一分支开发出现的冲突
-2 分支合并出现冲突
3.1 分支合并出冲突
<<<<<<< HEAD
print('sssssl')
=======
print('lsssss')
>>>>>>> dev
3.2 多人在同一分支开发出现冲突
git pull origin master
xx.py 第四行加入 print('张三')
git add .
git commit -m '加了张三'
git push origin master
git pull origin master
解决冲突,重新提交
<<<<<<< HEAD
print("lqz")
=======
print('hello world')
>>>>>>> a48c6510d7097240fa69bbea4ff0658b60768dea
4 线上分支合并
git merge 分支名
-远程创建分支,拉取到本地
-点点点创建
-在本地执行:
git pull origin
git checkout bug
-本地创建分支
git branch dev
git checkout dev
git push origin dev
-在本地dev分支加入xx.py 加入 一句话
-推送到远端 dev分支
-在远端 把dev合并进master
5 pycharm使用git
6 为开源项目贡献代码
作业
你写的luffy项目放到远端,同桌加为开发者
相互制造冲突解决
https://console.cloud.tencent.com/
https://console.cloud.tencent.com/smsv2
-https://mp.weixin.qq.com/
-使用微信公众号创建
https://cloud.tencent.com/document/product/382/43196