diff --git "a/0828-03\345\216\237\345\247\213\345\214\205.zip" "b/0828-03\345\216\237\345\247\213\345\214\205.zip" deleted file mode 100644 index 19cc3b7..0000000 Binary files "a/0828-03\345\216\237\345\247\213\345\214\205.zip" and /dev/null differ diff --git "a/1.python\345\205\245\351\227\250/test.md" "b/1.python\345\205\245\351\227\250/test.md" new file mode 100644 index 0000000..e69de29 diff --git "a/2.python\350\277\233\351\230\266/test.md" "b/2.python\350\277\233\351\230\266/test.md" new file mode 100644 index 0000000..e69de29 diff --git "a/Django\351\241\271\347\233\256\351\203\250\347\275\262/CenOS7\351\203\250\347\275\262Django\351\241\271\347\233\256.md" "b/Django\351\241\271\347\233\256\351\203\250\347\275\262/CenOS7\351\203\250\347\275\262Django\351\241\271\347\233\256.md" new file mode 100644 index 0000000..c3ae3b1 --- /dev/null +++ "b/Django\351\241\271\347\233\256\351\203\250\347\275\262/CenOS7\351\203\250\347\275\262Django\351\241\271\347\233\256.md" @@ -0,0 +1,235 @@ +# CentOS7部署Django项目 + +## 1. 云服务器 +这里使用的是腾讯云 +选择系统:CentOS7.3 + +记住云服务器登录密码 + +## 2. 配置Python3环境 +默认Python环境为python2.7,yum安装是需要python2的环境的 + +安装Python3: +```py +yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make +``` +这几个包必须得安装,否则安装python3时可能会出现各种错误 +运行下面两个命令,进行备份 +```py +cd /usr/bin +mv python python.bak +``` + +安装Python3.6与解压命令 +```py +wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz +tar -xvJf Python-3.6.3.tar.xz +cd Python-3.6.3 +``` + +编译安装 +```py +./configure prefix=/usr/local/python3 +make && make install +``` +安装完毕,/usr/local/目录下就会有python3了 + +## 3. 实现python3和python2的共存 +添加python3的软链接 +```py +rm /usr/bin/python +ln -s /usr/local/python3/bin/python3 /usr/bin/python +ln -s /usr/local/python3/bin/python3 /usr/bin/python3 +``` +这时候在执行命令python -v和python2 -V,应该就能看到python3和python2的版本了。 +因为执行yum需要python2版本,所以我们还要修改yum的配置,执行: +```py +vi /usr/bin/yum +``` +把#! /usr/bin/python修改为#! /usr/bin/python2 +同样地 +```py +vi /usr/libexec/urlgrabber-ext-down + +cd /usr/bin/ +ls yum* + +vim yum-config-manager +vim yum-debug-restore +vim yum-group-manager +vim yum-build-dep +vim yum-debug-dump +vim yumdownloader +``` +把#! /usr/bin/python都修改为#! /usr/bin/python2 + +> 相关文档: +> [centos7+django+python3+mysql+阿里云部署项目全流程](https://blog.csdn.net/a394268045/article/details/79288718?utm_source=blogxgwz5) +> [Flask构建弹幕微电影网站- 部署上线](https://www.jianshu.com/p/0f2eb99a5393) +> [centos7 下通过nginx+uwsgi部署django应用](http://projectsedu.com/) + +## 4. 安装MySQL5.7 +下载MySQL源安装包 +```py +wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm +``` +安装MySQL源 +```py +yum localinstall mysql57-community-release-el7-8.noarch.rpm +yum install mysql-devel +``` +安装MySQL +```py +yum install mysql-community-server +``` +启动MySQL +```py +systemctl start mysqld +``` +查看MySQL的启动状态 +```py +systemctl status mysqld +``` +设置开机启动 +```py +systemctl enable mysqld +``` + +修改 root 本地登录密码 +```py +grep 'temporary password' /var/log/mysqld.log +``` +上面命令显示root初始密码 +这里登入MySQL进行修改密码 +```py +mysql -uroot -p +enter password: 粘贴上面显示的初始密码 +mysql > set password for 'root'@'localhost'=password('!2Qw32sd'); +``` +配置默认编码为utf8 +修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示: +```py +[mysqld] +character_set_server=utf8 +init_connect='SET NAMES utf8' +``` + +## 5. 安装nginx +sudo yum install epel-release +sudo yun install nginx +sudo systemctl start nginx + +访问: +http://云服务器的域名或者IP/ + +> 官方文档 +> https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7 + + +## 6. 安装virtualenvwrapper +```py +yum install python-setuptools python-devel +pip install virtualenvwrapper +``` +编辑.bashrc文件 +```py +export WORKON_HOME=$HOME/.virtualenvs +source /usr/local/bin/virtualenvwrapper.sh +``` +重新加载.bashrc文件 +source ~/.bashrc + +新建虚拟环境 +mkvirtualenv mxonline + +进入虚拟环境 +workon mxonline + +我们可以通过 pip freeze > requirements.txt 将本地的虚拟环境安装包相信信息导出来 +然后将requirements.txt文件上传到服务器之后运行: + +## 7. 安装依赖包 +pip install -r requirements.txt +pip install uwsgi + + +## 8. 配置nginx +新建uc_nginx.conf +```py +# the upstream component nginx needs to connect to +upstream django { +# server unix:///path/to/your/mysite/mysite.sock; # for a file socket +server 127.0.0.1:8000; # for a web port socket (we'll use this first) +} +# configuration of the server + +server { +# the port your site will be served on +listen 80; +# the domain name it will serve for +server_name 132.232.183.18; # substitute your machine's IP address or FQDN +charset utf-8; + +# max upload size +client_max_body_size 75M; # adjust to taste + +# Django media +location /media { + alias /home/git/Mx_Online/media; # 指向django的media目录 +} + +location /static { + alias /home/git/Mx_Online/static; # 指向django的static目录 +} + +# Finally, send all non-media requests to the Django server. +location / { + uwsgi_pass django; + include uwsgi_params; # the uwsgi_params file you installed +} +} +``` + +将该配置文件加入到nginx的启动配置文件中 +sudo ln -s /home/git/Mx_Online/MxOnline/uc_nginx.conf /etc/nginx/conf.d/ + +拉取所有需要的static file 到同一个目录 +在django的setting文件中,添加下面一行内容: +```py + STATIC_ROOT = os.path.join(BASE_DIR, "static/") +``` +我这里会报错,所以改为 +但是这样执行collectstatic后所有的静态文件会重新放入MxOnline/static1这个文件里面 +```py + STATIC_ROOT = os.path.join(BASE_DIR, "static1/") +``` +在django的urls.py中添加: +```py + #静态文件 + re_path(r'^static/(?P.*)', serve, {"document_root": STATIC_ROOT}), +``` +运行命令 + python manage.py collectstatic + +这里需要注意 一定是直接用nginx命令启动, 不要用systemctl启动nginx不然会有权限问题 +运行nginx +sudo /usr/sbin/nginx + + +## 9. 运行Django项目 +```py +cd 项目名 +python3 manage.py runserver 0.0.0.0:8000 + +``` +访问: +```py +http://ip:8000/ +``` + + + + + + + diff --git a/README.md b/README.md index 819477d..8a4163c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,38 @@ -

python3总结及提升

+# Python3 Notes include: +test-----fix + + +## 一、Python3入门篇 + +1. python3基础 +2. Linux基础 +3. MySQL +4. Html+CSS +5. JavaScript +6. jQuery +7. Bootstrap +8. Vue/ExtJS +9. Ajax + + +## 二、Python3进阶篇 + +1. Django +2. Flask +3. Tornado +4. 算法与数据结构 +5. 设计模式 +6. Django REST framework +7. drf在线教育系统 +8. drf+Vue打造前后端分离的电商系统 + + +## 三、爬虫与数据分析 + + +## 四、机器学习 + + diff --git a/note/django.md b/note/django.md deleted file mode 100644 index 092487f..0000000 --- a/note/django.md +++ /dev/null @@ -1,5 +0,0 @@ -django 笔记 -1. django框架简介 -2. django的MVT设计模式 -3. django的工作流程 -4. django项目实战 diff --git a/0810-python-note b/standby/0810-python-note similarity index 74% rename from 0810-python-note rename to standby/0810-python-note index bb4cf6a..58f05a9 100644 --- a/0810-python-note +++ b/standby/0810-python-note @@ -10,3 +10,10 @@ python总结 9. 数据结构和算法 10.django学习 11.django项目实战 + + +12.dev_evan modify + update to master + +13.master modify + dev_evan update diff --git a/standby/0826django.md b/standby/0826django.md new file mode 100644 index 0000000..b97f9ec --- /dev/null +++ b/standby/0826django.md @@ -0,0 +1,117 @@ +django 笔记 +1. django框架简介 +2. django的MVT设计模式 +3. django的工作流程 +4. django项目实战 + + + +## Python3基础 + +>Python3 的六个标准数据类型中: +不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); +可变数据 ( 3 个):Dictionary(字典)、List(列表) 、Set(集合)。 + +## 1、Number(数字) 常用函数&方法: + +`type(a)` 检测a的数据类型 +`int(x) ` 将x转换为一个整数。 +`float(x) ` 将x转换到一个浮点数。 +`complex(x)` 将x转换到一个复数,实数部分为 x,虚数部分为 0 + +## 2、String(字符串) 常用函数&方法: + +`max(str)、min(str)` 求最大最小值 +`str.capitalize() ` 首字母大写,非字母不作处理 +`str.isalnum() ` 检测字符串是否由字母和数字组成 +`str.isalpha() ` 检测字符串是否只由字母组成 +`str.rstrip() ` 删除string 字符串末尾指定包含的字符串(无序、默认空格) +`str.upper()` 字母小写转换为大写 +`str.swapcase()` 大小写互换 + +## 3、Tuple(元组) 常用函数: + +`len(tuple)` 计算元组中元素的个数 +`max(tuple)` 返回元组中元素的最大值 +`min(tuple) ` 最小值 +`tuple(list)` 将列表转换为元组 + +## 4、Dictionary(字典) 常用函数&方法: + +`len(dict) `计算字典元素个数 +`str(dict) ` 以字符串形式输出字典 +`type(varlable)`返回输入的变量类型 +`dict.clear() `删除字典中所有的元素 +`dict.copy()` 返回一个字典的浅复制, 深拷贝键;不拷贝值,还是引用 +`dict.fromkeys(seq, value)` 创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值 +`key in dict `如果键在字典dict中返回True +`dict1.update(dicts)` 把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict1 里 +`dict.keys()` 以列表返回一个字典所有的键 +`dict.get(key, default=None)` 返回指定键的值,如果值不在字典中返回默认值 +`dict.setdefault(key, default=None)` 如果键不存在于字典中,将会添加键并将值设为默认值 +`dict.items() `以列表返回可遍历的(键, 值) 元组数组 +`dict.popitem()` 随机返回并删除字典中的一对键和值(默认删除末尾对) + +## 5、List(列表) 常用函数&方法: +`len(list)、max(list)、min(list)、list(seq)` 将元组转换为列表 +`list_a.append(b) ` # 拼接字符串到尾部,列表拼接出现情况:【1,2,【1,2】】 +`list_a.extend(list_b) ` # 可以拼接列表 +`list.sort(reverse=True)` # 排序、反转 +`list.pop()` # 根据索引移除列表中的指定一个元素 +`list.clear() `# 清空列表 +`del list[i] `# 删除列表元素 +`list.reverse()` # 列表反向排序 +`list.insert(1,2) `# 在索引1的位置插入2 + +## 6、Set(集合) 常用函数&方法: + +`s.add( x )` 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作 +`s.update( x )` 添加元素,且参数可以是列表,元组,字典等 +`s.remove( x ) ` 将元素 x 添加到集合 s 中移除,如果元素不存在,则会发生错误 +`s.discard( x )` 移除集合中的元素,且如果元素不存在,不会发生错误 +`s.pop() ` 设置随机删除集合中的一个元素 +`len(s) ` 计算集合 s 元素个数 +`s.clear() ` 清空集合 +`x in s` 判断元素是否在集合中存在,存在返回 True,不存在返回 False + +## 7、条件判断 +7.1-Python中if语句的一般形式如下所示: +```py +if condition_1: + statement_block_1 +elif condition_2: + statement_block_2 +else: + statement_block_3 +``` +## 8、循环语句 + +8.1-Python中while语句的一般形式: +```py +while 判断条件: + 语句 +else: + 语句 +``` +8.2-Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 +for循环的一般格式如下: +```py +for in : + +else: + +``` +8.3-range()函数 +如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列 +```py +>>>for i in range(5): +... print(i) +... +``` +8.4-Python pass是空语句,是为了保持程序结构的完整性。 +pass 不做任何事情,一般用做占位语句,如下实例 +实例 +```py +>>>while True: +... pass # 等待键盘中断 (Ctrl+C) +``` diff --git a/standby/0830evan_commit b/standby/0830evan_commit new file mode 100644 index 0000000..9983444 --- /dev/null +++ b/standby/0830evan_commit @@ -0,0 +1,22 @@ +test branch dev_evan: + +git branch dev_evan +git checkout dev_evan + +touch test +vim test + +git add -A +git commit -m "add test file" + +git pull + +git push origin dev_evan + +git merge dev_evan + + +git pull +git pull origin dev_evan + +git push origin master diff --git a/standby/0830git_log b/standby/0830git_log new file mode 100644 index 0000000..8ed046b --- /dev/null +++ b/standby/0830git_log @@ -0,0 +1,376 @@ +hyh@hyh-iMac:~/git/0807git/python$ git checkout master +切换到分支 'master' +您的分支与上游分支 'origin/master' 一致。 + +hyh@hyh-iMac:~/git/0807git/python$ git merge frag +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git branch -d frag +已删除分支 frag(曾为 70c6eda)。 +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev +* master + +hyh@hyh-iMac:~/git/0807git/python$ git merge dev +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git push +To git@github.com:hyhplus/python.git + ! [rejected] dev -> dev (fetch first) + ! [rejected] master -> master (fetch first) +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外 +提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更 +提示:(如 'git pull ...')。 +提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。 +hyh@hyh-iMac:~/git/0807git/python$ ls +0810-python-note note README.md +hyh@hyh-iMac:~/git/0807git/python$ git pull +remote: Counting objects: 6, done. +remote: Compressing objects: 100% (4/4), done. +remote: Total 6 (delta 1), reused 6 (delta 1), pack-reused 0 +展开对象中: 100% (6/6), 完成. +来自 github.com:hyhplus/python + 70c6eda..9a844e9 master -> origin/master + 70c6eda..5c5c0f8 dev -> origin/dev +更新 70c6eda..9a844e9 +Fast-forward + "0828-03\345\216\237\345\247\213\345\214\205.zip" | Bin 0 -> 1793511 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 "0828-03\345\216\237\345\247\213\345\214\205.zip" +hyh@hyh-iMac:~/git/0807git/python$ ls +0810-python-note 0828-03原始包.zip note README.md +hyh@hyh-iMac:~/git/0807git/python$ git pull origin dev +来自 github.com:hyhplus/python + * branch dev -> FETCH_HEAD +更新 9a844e9..5c5c0f8 +Fast-forward + test | 3 +++ + 1 file changed, 3 insertions(+) + create mode 100644 test +hyh@hyh-iMac:~/git/0807git/python$ ls +0810-python-note 0828-03原始包.zip note README.md test +hyh@hyh-iMac:~/git/0807git/python$ git merge dev +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git merge +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git push +Total 0 (delta 0), reused 0 (delta 0) +To git@github.com:hyhplus/python.git + 9a844e9..5c5c0f8 master -> master + ! [rejected] dev -> dev (non-fast-forward) +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。 +提示:检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见 +提示:'git push --help' 中的 'Note about fast-forwards' 小节。 + +hyh@hyh-iMac:~/git/0807git/python$ git push origin master +Everything up-to-date +hyh@hyh-iMac:~/git/0807git/python$ git merge +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev +* master +hyh@hyh-iMac:~/git/0807git/python$ git checkout -b dev_evan origin/dev_evan +fatal: 不能同时更新路径并切换到分支'dev_evan'。 +您是想要检出 'origin/dev_evan' 但其未能解析为提交么? + +hyh@hyh-iMac:~/git/0807git/python$ git branch dev_evan +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev + dev_evan +* master +hyh@hyh-iMac:~/git/0807git/python$ git checkout dev_evan +切换到分支 'dev_evan' +hyh@hyh-iMac:~/git/0807git/python$ touch evan +hyh@hyh-iMac:~/git/0807git/python$ vim evan +hyh@hyh-iMac:~/git/0807git/python$ vim evan +hyh@hyh-iMac:~/git/0807git/python$ git add -A +hyh@hyh-iMac:~/git/0807git/python$ git commit +使用"fg" 返回nano + +[1]+ 已停止 git commit +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "add a test branch" +[dev_evan 3530167] add a test branch + 1 file changed, 22 insertions(+) + create mode 100644 evan +hyh@hyh-iMac:~/git/0807git/python$ git pull +来自 github.com:hyhplus/python + * [新分支] jack-dev -> origin/jack-dev +当前分支没有跟踪信息。 +请指定您要合并哪一个分支。 +详见 git-pull(1)。 + + git pull + +如果您想要为此分支创建跟踪信息,您可以执行: + + git branch --set-upstream-to=origin/ dev_evan + +hyh@hyh-iMac:~/git/0807git/python$ git branch --set-upstream-to=origin/ dev_evan +bash: branch: 没有那个文件或目录 +hyh@hyh-iMac:~/git/0807git/python$ git branch --set-upstream-to=origin/dev_evan +error: 请求的上游分支 'origin/dev_evan' 不存在 +提示: +提示:如果您正计划基于远程一个现存的上游分支开始你的工作, +提示:您可能需要执行 "git fetch" 来获取分支。 +提示: +提示:如果您正计划推送一个能与对应远程分支建立跟踪的新的本地分支, +提示:您可能需要使用 "git push -u" 推送分支并配置和上游的关联。 + +hyh@hyh-iMac:~/git/0807git/python$ git push -u origin dev_evan +对象计数中: 3, 完成. +Delta compression using up to 2 threads. +压缩对象中: 100% (3/3), 完成. +写入对象中: 100% (3/3), 385 bytes | 0 bytes/s, 完成. +Total 3 (delta 1), reused 0 (delta 0) +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To git@github.com:hyhplus/python.git + * [new branch] dev_evan -> dev_evan +分支 dev_evan 设置为跟踪来自 origin 的远程分支 dev_evan。 + +hyh@hyh-iMac:~/git/0807git/python$ git pull +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev +* dev_evan + master +hyh@hyh-iMac:~/git/0807git/python$ git checkout master +切换到分支 'master' +您的分支与上游分支 'origin/master' 一致。 +hyh@hyh-iMac:~/git/0807git/python$ vim 0810-python-note +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +Already up-to-date. + +hyh@hyh-iMac:~/git/0807git/python$ git push origin branch +error: src refspec branch does not match any. +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +hyh@hyh-iMac:~/git/0807git/python$ git branch dev_evan +fatal: 一个分支名 'dev_evan' 已经存在。 +hyh@hyh-iMac:~/git/0807git/python$ git checkout dev_evan +M 0810-python-note +切换到分支 'dev_evan' +您的分支与上游分支 'origin/dev_evan' 一致。 +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git log +commit 35301677f5c082260117b909a96f51489110640a +Author: hyh**us <28*****670@qq.com> +Date: Thu Aug 30 18:48:28 2018 +0800 + + add a test branch + +commit 5c5c0f819dba5422f277fb8e31d5c8c64709aa80 +Author: jac**jj <25*****643@qqcom> +Date: Thu Aug 30 17:09:28 2018 +0800 + + add test + +commit 9a844e9978c032ae1502af78fa599858c63da6ae +Author: ja**jj <25****643@qqcom> +Date: Thu Aug 30 16:51:23 2018 +0800 + + jack commit + +commit 70c6edadb10b68a2ef32d67993e5dcec27c0ee03 +Author: hy**us <28***670@qq.com> +Date: Thu Aug 30 12:54:30 2018 +0800 + + create new file +hyh@hyh-iMac:~/git/0807git/python$ git push origin dev_evan +Everything up-to-date +hyh@hyh-iMac:~/git/0807git/python$ git checkout master +M 0810-python-note +切换到分支 'master' +您的分支与上游分支 'origin/master' 一致。 + +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "update" +位于分支 master +您的分支与上游分支 'origin/master' 一致。 +尚未暂存以备提交的变更: + 修改: 0810-python-note + +修改尚未加入提交 + +hyh@hyh-iMac:~/git/0807git/python$ git add -A +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev + dev_evan +* master +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "update" +[master a34df20] update + 1 file changed, 3 insertions(+) +hyh@hyh-iMac:~/git/0807git/python$ git pull +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git pull master +fatal: 'master' does not appear to be a git repository +fatal: Could not read from remote repository. + +Please make sure you have the correct access rights +and the repository exists. +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git push origin master +对象计数中: 3, 完成. +Delta compression using up to 2 threads. +压缩对象中: 100% (3/3), 完成. +写入对象中: 100% (3/3), 314 bytes | 0 bytes/s, 完成. +Total 3 (delta 2), reused 0 (delta 0) +remote: Resolving deltas: 100% (2/2), completed with 2 local objects. +To git@github.com:hyhplus/python.git + 5c5c0f8..a34df20 master -> master + +hyh@hyh-iMac:~/git/0807git/python$ git checkout dev_evan +切换到分支 'dev_evan' +您的分支与上游分支 'origin/dev_evan' 一致。 +hyh@hyh-iMac:~/git/0807git/python$ vim 0810-python-note +hyh@hyh-iMac:~/git/0807git/python$ git add -a +error: unknown switch `a' +用法:git add [<选项>] [--] <路径规格>... + + -n, --dry-run 演习 + -v, --verbose 冗长输出 + + -i, --interactive 交互式拣选 + -p, --patch 交互式挑选数据块 + -e, --edit 编辑当前差异并应用 + -f, --force 允许添加忽略的文件 + -u, --update 更新已跟踪的文件 + -N, --intent-to-add 只记录,该路径稍后再添加 + -A, --all 添加所有改变的已跟踪文件和未跟踪文件 + --ignore-removal 忽略工作区中移除的路径(和 --no-all 相同) + --refresh 不添加,只刷新索引 + --ignore-errors 跳过因出错不能添加的文件 + --ignore-missing 检查在演习模式下文件(即使不存在)是否被忽略 + +hyh@hyh-iMac:~/git/0807git/python$ git add -A +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "dev update" +[dev_evan 88e2c8d] dev update + 1 file changed, 5 insertions(+) +hyh@hyh-iMac:~/git/0807git/python$ git pull origin dev_evan +来自 github.com:hyhplus/python + * branch dev_evan -> FETCH_HEAD +Already up-to-date. + +hyh@hyh-iMac:~/git/0807git/python$ git push origin dev_evan +对象计数中: 3, 完成. +Delta compression using up to 2 threads. +压缩对象中: 100% (3/3), 完成. +写入对象中: 100% (3/3), 320 bytes | 0 bytes/s, 完成. +Total 3 (delta 2), reused 0 (delta 0) +remote: Resolving deltas: 100% (2/2), completed with 2 local objects. +To git@github.com:hyhplus/python.git + 3530167..88e2c8d dev_evan -> dev_evan +hyh@hyh-iMac:~/git/0807git/python$ git merge dev_evan +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +自动合并 0810-python-note +冲突(内容):合并冲突于 0810-python-note +自动合并失败,修正冲突然后提交修正的结果。 + +hyh@hyh-iMac:~/git/0807git/python$ vim 0810-python-note +hyh@hyh-iMac:~/git/0807git/python$ git merge dev_evan +error: merge is not possible because you have unmerged files. +提示:请在工作区改正文件,然后酌情使用 'git add/rm <文件>' 命令标记 +提示:解决方案并提交。 +fatal: Exiting because of an unresolved conflict. +hyh@hyh-iMac:~/git/0807git/python$ git push +To git@github.com:hyhplus/python.git + ! [rejected] dev -> dev (non-fast-forward) +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。 +提示:检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见 +提示:'git push --help' 中的 'Note about fast-forwards' 小节。 + +hyh@hyh-iMac:~/git/0807git/python$ git add -A +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "ok" +[dev_evan cfcff0b] ok + +hyh@hyh-iMac:~/git/0807git/python$ git push +对象计数中: 3, 完成. +Delta compression using up to 2 threads. +压缩对象中: 100% (3/3), 完成. +写入对象中: 100% (3/3), 346 bytes | 0 bytes/s, 完成. +Total 3 (delta 2), reused 0 (delta 0) +remote: Resolving deltas: 100% (2/2), completed with 2 local objects. +To git@github.com:hyhplus/python.git + 88e2c8d..cfcff0b dev_evan -> dev_evan + ! [rejected] dev -> dev (non-fast-forward) +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。 +提示:检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见 +提示:'git push --help' 中的 'Note about fast-forwards' 小节。 +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev +* dev_evan + master + +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +Already up-to-date. + +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "modify" +位于分支 dev_evan +您的分支与上游分支 'origin/dev_evan' 一致。 +无文件要提交,干净的工作区 + +hyh@hyh-iMac:~/git/0807git/python$ git checkout master +切换到分支 'master' +您的分支与上游分支 'origin/master' 一致。 + +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "modify" +位于分支 master +您的分支与上游分支 'origin/master' 一致。 +无文件要提交,干净的工作区 +hyh@hyh-iMac:~/git/0807git/python$ git add -A +hyh@hyh-iMac:~/git/0807git/python$ git commit -m "modify" +位于分支 master +您的分支与上游分支 'origin/master' 一致。 +无文件要提交,干净的工作区 +hyh@hyh-iMac:~/git/0807git/python$ git pull origin master +来自 github.com:hyhplus/python + * branch master -> FETCH_HEAD +Already up-to-date. + +hyh@hyh-iMac:~/git/0807git/python$ git merge dev_evan +更新 a34df20..cfcff0b +Fast-forward + 0810-python-note | 6 +++++- + evan | 22 ++++++++++++++++++++++ + 2 files changed, 27 insertions(+), 1 deletion(-) + create mode 100644 evan + +hyh@hyh-iMac:~/git/0807git/python$ git push origin master +Total 0 (delta 0), reused 0 (delta 0) +To git@github.com:hyhplus/python.git + a34df20..cfcff0b master -> master + +hyh@hyh-iMac:~/git/0807git/python$ git checkout jack-dev origin/jack-dev +error: pathspec 'jack-dev' did not match any file(s) known to git. +error: pathspec 'origin/jack-dev' did not match any file(s) known to git. +hyh@hyh-iMac:~/git/0807git/python$ git checkout -b jack-dev origin/jack-dev +分支 jack-dev 设置为跟踪来自 origin 的远程分支 jack-dev。 +切换到一个新分支 'jack-dev' +hyh@hyh-iMac:~/git/0807git/python$ git branch + dev + dev_evan +* jack-dev + master +hyh@hyh-iMac:~/git/0807git/python$ git pull +Already up-to-date. +hyh@hyh-iMac:~/git/0807git/python$ git push +To git@github.com:hyhplus/python.git + ! [rejected] dev -> dev (non-fast-forward) +error: 无法推送一些引用到 'git@github.com:hyhplus/python.git' +提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。 +提示:检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见 +提示:'git push --help' 中的 'Note about fast-forwards' 小节。 +hyh@hyh-iMac:~/git/0807git/python$ + diff --git a/standby/images/1.png b/standby/images/1.png new file mode 100644 index 0000000..1a0b390 Binary files /dev/null and b/standby/images/1.png differ diff --git a/standby/images/a.jpg b/standby/images/a.jpg new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/standby/images/a.jpg @@ -0,0 +1 @@ + diff --git "a/standby/\343\200\220Django REST framework\347\224\265\345\225\206\351\241\271\347\233\256\347\254\224\350\256\260\343\200\221\347\254\25411\347\253\240 \351\246\226\351\241\265\350\275\256\346\222\255\345\233\276, \345\225\206\345\223\201\346\225\260\351\207\217, \347\274\223\345\255\230, \350\256\277\351\227\256\351\231\220\351\200\237\345\212\237\350\203\275\345\274\200\345\217\221.md" "b/standby/\343\200\220Django REST framework\347\224\265\345\225\206\351\241\271\347\233\256\347\254\224\350\256\260\343\200\221\347\254\25411\347\253\240 \351\246\226\351\241\265\350\275\256\346\222\255\345\233\276, \345\225\206\345\223\201\346\225\260\351\207\217, \347\274\223\345\255\230, \350\256\277\351\227\256\351\231\220\351\200\237\345\212\237\350\203\275\345\274\200\345\217\221.md" new file mode 100644 index 0000000..f03e69a --- /dev/null +++ "b/standby/\343\200\220Django REST framework\347\224\265\345\225\206\351\241\271\347\233\256\347\254\224\350\256\260\343\200\221\347\254\25411\347\253\240 \351\246\226\351\241\265\350\275\256\346\222\255\345\233\276, \345\225\206\345\223\201\346\225\260\351\207\217, \347\274\223\345\255\230, \350\256\277\351\227\256\351\231\220\351\200\237\345\212\237\350\203\275\345\274\200\345\217\221.md" @@ -0,0 +1,165 @@ +## 首页轮播图接口实现 +轮播图接口 & 新品接口 & 下面的系列产品接口 +支付功能开发完了,我们需要进入本地调试环境 +运行一下查看这个本地调试环境是否可以运行。将vue项目中的地址改为我们本地地址。 + +banner有一个外键指向我们的goods。 +新建一个配套的BannerSerializer: + +goods/serializers.py: +```py +class BannerSerializer(serializers.ModelSerializer): + class Meta: + model = Banner + fields = "__all__" +``` + +goods/views.py: +```py +class BannerViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + """ + list: 获取轮播图列表 + """ + + queryset = Banner.objects.all().order_by("index") + serializer_class = BannerSerializer +``` + +设置url +```py +# 首页banner轮播图url +router.register(r'banners', BannerViewset, base_name="banners") +``` + +没有报错但是也没有数据,我们直接来我们的后台管理系统中添加三张轮播图。 +![image](images/1.png) +![image](https://img-blog.csdn.net/20181005232620652?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1l1eWgxMzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) + +## 新品功能接口开发 +新品是 goods 中有一个 is_new 的选项 +直接使用 Goods 的接口,进行一个过滤,过滤出其中是新品的。为goods的filter添加is_new字段 + +goods/filters.py +```py + fields = ['pricemin', 'pricemax', 'name', 'is_hot','is_new'] +``` +使用过滤器可以看到url中 is_new =ture + +这时返回200的正确状态码,但是值为空。因为我们并没有给它设置is_new的商品。 + +在xadmin后台添加两个新品。 + +## 首页商品大分类显示功能 +大分类商品开发 + +**这个div中元素data之间的关系会复杂一些。** +一个大类会有很多brand商标。 +大类又有小类,依然一对多 +大类里面的商品。 +加上它还有一张大图片。 + +首先来写一个用于这个系列商品展示的Serializer +```py +class IndexCategorySerializer(serializers.ModelSerializer): + class Meta: + model = GoodsCategory + fields = "__all__" +``` +找出其中的一对多关系。 + +首先要取到brand。GoodsCategoryBrand中有一个外键指向category,我们为它添加一个related_name。让它反向取的时候比较方便。 +```py + category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, related_name='brands', null=True, blank=True, verbose_name="商品类目") +``` +我们就可以通过goods_category反向取到brand。 + +首先写一个BrandSerializer +```py +class BrandSerializer(serializers.ModelSerializer): + class Meta: + model = GoodsCategoryBrand + fields = "__all__" +``` +将brand放入IndexCategorySerializer +```py +# 一个category会有多个brand。 +brands = BrandSerializer(many=True) +``` +为什么不能直接用goods的Serializer。 + +goods中确实有一个外键指向我们的category。为什么不能反向取。 + +因为商品选择哪个类别的时候,往往选择的是最小的类别。(第三类) +而不是直接从属于第一类。 + +外键指向的第三类。而我们要拿到第一类别的数据。直接使用goods的Serializer取不出来。 + +```py +goods = serializers.SerializerMethodField() + + def get_goods(self, obj): + # 将这个商品相关父类子类等都可以进行匹配 + all_goods = Goods.objects.filter(Q(category_id=obj.id)|Q(category__parent_category_id=obj.id)|Q(category__parent_category__parent_category_id=obj.id)) + goods_serializer = GoodsSerializer(all_goods, many=True, context={'request': self.context['request']}) + return goods_serializer.data + +``` + +取到二级商品分类 +```py + sub_cat = CategorySerializer2(many=True) +``` +首页广告商品大图,首先这是一个商品,属于一级类。 + +设计IndexAd model来存大类下的广告位。 +```py +class IndexAd(models.Model): + """ + 首页类别标签右边展示的七个商品广告 + """ + category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, related_name='category',verbose_name="商品类目") + goods =models.ForeignKey(Goods, on_delete=models.CASCADE, related_name='goods') + + class Meta: + verbose_name = '首页广告' + verbose_name_plural = verbose_name + + def __str__(self): + return self.goods.name + +``` + +```py +ad_goods = serializers.SerializerMethodField() + + def get_ad_goods(self, obj): + goods_json = {} + ad_goods = IndexAd.objects.filter(category_id=obj.id, ) + if ad_goods: + good_ins = ad_goods[0].goods + goods_json = GoodsSerializer(good_ins, many=False, context={'request': self.context['request']}).data + return goods_json + +``` +ad_goods实际上我们只需要它的id和一张图片就够了,不需要使用返回所有商品信息的 +GoodsSerializer,自己取里面的字段做返回。 +或再去写一个Serializer + +编写对应的viewset +```py +class IndexCategoryViewset(mixins.ListModelMixin, viewsets.GenericViewSet): + """ + 首页商品分类数据 + """ + # 获取已经被我们设置顶部导航的数据 + queryset = GoodsCategory.objects.filter(is_tab=True, name__in=["生鲜食品", "酒水饮料"]) + serializer_class = IndexCategorySerializer + +``` +这里配置酒水饮料和生鲜食品是因为我们后面添加brand和ad_goods可以挑着这两类添加 + +为该接口配置相应的url +```py +# 首页系列商品展示url +router.register(r'indexgoods', IndexCategoryViewset, base_name="indexgoods") +``` diff --git a/test b/test deleted file mode 100644 index edde1b4..0000000 --- a/test +++ /dev/null @@ -1,3 +0,0 @@ -jskg -aga -sgga diff --git a/test2demo.md b/test2demo.md new file mode 100644 index 0000000..be91f78 --- /dev/null +++ b/test2demo.md @@ -0,0 +1,285 @@ +序号 +时间 +源->目标 +协议 +设备 +大小 +线路 +应用名称 +应用规则 +源 +丢包标记 +动作 +1 +17:06:43 +192.168.64.189:52082 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +2 +17:06:42 +192.168.64.189:52082 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +3 +17:06:42 +192.168.64.189:52082 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +4 +17:06:42 +192.168.64.189:52082 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +5 +17:01:45 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +6 +17:01:43 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +7 +17:01:42 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +8 +17:01:41 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +9 +17:01:41 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +10 +17:01:41 +192.168.64.189:56402 -> 142.250.76.14:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +11 +16:46:18 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +12 +16:46:16 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +13 +16:46:15 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +14 +16:46:15 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +15 +16:46:14 +113.108.239.225:443 -> 192.168.64.189:54657 +icmp +eth2 -> eth0 +590(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +16 +16:46:14 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +17 +16:46:14 +192.168.64.189:54657 -> 113.108.239.225:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +18 +16:46:01 +192.168.64.189:59939 -> 113.108.239.230:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +19 +16:45:59 +192.168.64.189:59939 -> 113.108.239.230:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +20 +16:45:58 +192.168.64.189:59939 -> 113.108.239.230:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +21 +16:45:57 +113.108.239.230:443 -> 192.168.64.189:59939 +icmp +eth2 -> eth0 +590(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +22 +16:45:57 +192.168.64.189:59939 -> 113.108.239.230:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] +AppControl +DROPFLAG_appcontrol +应用服务控制丢包。 +23 +16:45:57 +192.168.64.189:59939 -> 113.108.239.230:443 +udp +eth0 -> eth2 +1292(B) +线路1 +QUIC +QUIC[2] \ No newline at end of file diff --git a/test_demo.txt b/test_demo.txt new file mode 100644 index 0000000..09f59bf --- /dev/null +++ b/test_demo.txt @@ -0,0 +1,38 @@ +Owner avatar +Python3-Notes +Public +hyhplus/Python3-Notes +Go to file +t +Name +hyhplus +hyhplus +Update CenOS7部署Django项目.md +6862d38 + · +7 years ago +1.python入门 +添加Django项目部署笔记 +7 years ago +2.python进阶 +添加Django项目部署笔记 +7 years ago +Django项目部署 +Update CenOS7部署Django项目.md +7 years ago +standby +添加Django项目部署笔记 +7 years ago +README.md +Update README.md +7 years ago +Repository files navigation +README +Python3 Notes include: +一、Python3入门篇 +python3基础 +Linux基础 +MySQL +Html+CSS +JavaScript +jQuery \ No newline at end of file