※二级*Python开发、django框架总结

django

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

开发项目过程中,项目开发过后知识点遗忘,再次设计项目时,又得重新学习。该文章主旨碎片知识进行整理,便于高效开发项目,节约时间成本。

常用指令

基础指令合集

创建项目和注册app
django-admin startproject xxx         创建项目xxx
python manage.py startapp xxx         注册app
----------------------------------------------
​
数据库迁移
python manage.py makemigrations              生成数据迁移文件
python manage.py migrate                     迁移数据
----------------------------------------------
​
python manage.py runserver                      运行django服务器
python manage.py createsuperuser               创建超级管理员
python manage.py collectstatic                  静态文件收集
pip show django|grep -i location           查看虚拟环境位置             
----------------------------------------------

其他不常用
django-admin --help                            查看可以执行的指令!
python manage.py + 回车                        可查看更多命令
python manage.py flush                         清空数据库
python manage.py shell                    进入到调试代码的调试模式
————————————————

操作系统
centos
scp 服务器之间文件传输

从本地服务器复制到远程服务器:
scp -r /etc/profile root@192.168.108.9:/etc/profile
从远程服务器复制到本地服务器:
scp -r root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

tree 用于文件目录生成
supervisord 方便的监听、启动、停止、重启一个或多个进程,用来后台运行shell指令启动runserver和celery等
后端
虚拟环境工具

常用的包

  • random

  • time
    time.sleep(10) #就是让程序暂停10秒再继续执行,注意单位是秒。

  • datetime
    datetime.datetime.now() #当前时间
    datetime.datetime.now().strftime(“”%Y-%m-%d %H:%M:%S"") #时间格式化 年月日时分秒

易错点

miniconda

linux

[linux安装miniconda并使用] (https://blog.csdn.net/qq_42663692/article/details/130462018)
【Linux】conda: command not found解决办法

下载安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
————————————————————————————————
#后续根据提示选择安装路径或添加到环境变量即可
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
————————————————————————————————
#基础指引    创建项目和注册app
conda create -n envname  python=x.x.x     创建指定python版本的虚拟环境envname
conda activate envname        进入虚拟环境
conda deactivate 退出虚拟环境
conda env remove -n envname 删除虚拟环境
conda install packagenake   安装第三方的库
pip install packagenake   安装第三方的库(不推荐)
#示例
conda create -n py37 python=3.7

## 全部命令
#1. conda --version #查看conda版本,验证是否安装
2. conda update conda #更新至最新版本,也会更新其它相关包
3. conda update --all #更新所有包
4. conda update package_name #更新指定的包
5. conda create -n env_name package_name #创建名为env_name的新环境,并在该环境下安装名为package_name 的包,可以指定新环境的版本号,例如:conda create -n python2 python=python2.7 numpy pandas,创建了python2环境,python版本为2.7,同时还安装了numpy pandas包
6. source activate env_name #切换至env_name环境
7. source deactivate #退出环境
8. conda info -e #显示所有已经创建的环境
9. conda create --name new_env_name --clone old_env_name #复制old_env_name为new_env_name
10. conda remove --name env_name –all #删除环境
11. conda list #查看所有已经安装的包
12. conda install package_name #在当前环境中安装包
13. conda install --name env_name package_name #在指定环境中安装包
14. conda remove -- name env_name package #删除指定环境中的包
15. conda remove package #删除当前环境中的包
16. conda env remove -n env_name #采用第10条的方法删除环境失败时,可采用这种方法

----------------------------------------------

例如我们用miniconda创建了一个虚拟环境xtreme, python的可执行路径在

/【用户名】/miniconda/envs/xtreme/bin/python

windows

参考文章1 主要是1下载安装 2配置虚拟环境

  • 补充1
    配置清华源
    此处需要配置一个清华的镜像服务器,以解决conda下载文件速度慢的问题。
    在Anaconda Promot中依次输入以下两条命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
  • 补充2
    8、修改默认虚拟环境路径方法
    首先,找到用户目录下的.condarc文件(C:\Users\username)。
    打开.condarc文件之后,添加或修改.condarc 中的 env_dirs 设置环境路径,按顺序第⼀个路径作为默认存储路径,搜索环境按先后顺序在各⽬录中查找。直接在.condarc添加:
envs_dirs:
  - D:\SoftD\08envs
pkgs_dirs:
  - D:\SoftD\08envs

pyenv

三方工具

IDE

pycharm

配置远程服务器
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
添加了一个软件sftp的连接,也就是ssh的连接,这里不要☑️​​Visible only for this project​​​。然后在​​root path​​ 指定一个开发的目录即可,不设置也可以

配置映射关系

在这里插入图片描述

  • Pycharm 打开远程目录 Remote Host

在这里插入图片描述

  • 连接远程终端

在这里插入图片描述

  • 连接远程解释器

进入设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解释器目录一般是在 /【用户名】/miniconda/env/<虚拟环境名>/bin/python3
远程解释器配置的讲解比较详细

vscode

连接远程服务器

pip

参考一 python国内镜像源及使用方法(超详细)
使用示例:
格式为:pip install 库名 -i 镜像地址(注意空格的存在)
如下列是安装pandas库的示例:

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple 

redis

window系统的redis是微软团队根据官方的linux版本高仿的
官方原版: https://redis.io/
中文官网:http://www.redis.cn

  • 连接redis
连接本地的 redis 服务
$ redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
  • 基础命令
在这里插入代码片

git

1.安装git

2.配置git秘钥测试GitHub和gitee远程仓库链接

3.基础常用指令

————————————————————————————————
#前期准备 
#生成秘钥
ssh-keygen -t rsa -C "youremail@youremail.com"  
# 三次回车即可生成 ssh key

查看你的 public key
cat ~/.ssh/id_rsa.pub

并把他添加到Gitee(gitee.com SSHKey添加地址)或GitHub(github.com SSHKey添加地址)

#作者身份申明
git config --global user.email "xxxxxxxx@qq.com"
01
git config --global credential.helper store           #解决git pull/push每次都需要输入密码问题,将信息记录到本地
git config --global credential.helper wincred       #   windows系统  取消本地缓存用户名和密码的安全策略
02
git config --unset-all credential.helper
git config --global credential.helper osxkeychain  #linux系统

————————————————————————————————
#提交到本地git
git init /[filename] -在filename下创建.git #初始化仓库
git add .#这个命令会监控工作区的状态树,会把工作区的所有变化提交到暂存区,包括修改内容的文件(modified)和新文件(new),但是不包括被删除的文件
git add -u#(git add --update缩写)这个命令不会提交新文件(untracked file)-----仅仅作为修改提交被修改(modified)和被删除(delete)文件,不包括新文件(new)
git add -A#(git add -all缩写)是上面两个命令的集合,会提交所有的文件包括修改新建和删除的
git commit -m "[name]" -对更改提交的文件进行注释  #

# 提交到 Github/gitee
#git remote rm origin  删除之前存在的仓库
git remote add origin git@github.com:tianqixin/runoob-git-test.git #添加远程仓库地址git remote add [shortname] [url] -shortname 为本地的版本库
git push -f origin master #本地强制上传到远程,把远程的覆盖
git push -u origin master #上传到远程仓库
#git push -u origin master报错:(如果推送代码,出现以下提示: git pull ....,则表示当前本地的代码和线上的代码版本不同.需要把线上的代码执行以下命令,拉取到本地,
进行同步#git pull --rebase origin master(master:master【本地分支:远程分支】,相同时可以只写一个) 拉取分支进行代码合并7(git -C 路径 pull)
【或者1#git fetch origin #告诉 Git 去获取它有你没有的数据
2#git merge origin/master #将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支】

#下载远程仓库文件
克隆分支
## git clone -b <分支名> <远程仓库地址>
从远端仓库拉取 dev 分支到本地
## git fetch origin <分支名>

#其他
git status #命令用于查看在你上次提交之后是否有对文件进行再次修改
git status -s#-s获得上次提交之后是否有对文件进行再次修改的简短的输出结果 

git log --oneline #查看历史记录的简洁版本
git log --reverse --oneline #逆向显示历史记录的简洁版本
git log --author=Linus --oneline -5 #指定用户最近5的的记录

git reset  [HEAD]  #回退版本  -0e043468 指定版本  -HEAD^ 上一个版本 -HEAD^2 上上一个版本 
git reset HEAD [files]#用于取消已缓存的内容 取消git add之后 取消的git commit操作就不会提交

git remote -v #显示所有远程仓库
git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名


1#git fetch origin #告诉 Git 去获取它有你没有的数据  
2#git merge origin/master #将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支 -git merge [alias]/[branch]  -branch 分支名

git branch (branchname) #创建分支命令
git checkout (branchname) #切换分支命令
git merge #合并分支命令 
git branch #列出分支
git checkout -b (branchname) #来创建新分支并立即切换到该分支下
git branch -d (branchname) #删除分支命令

git tag -a <tagname> -m "runoob.com标签"  #指定标签信息
git tag -a v0.9 85fc7e7 #给指定版本添加标签
git tag -d v1.1 #删除标签

————————————————————————————————
#git只拉取仓库部分代码
考录到有时候远程仓库很大,只需要拉取部分代码,
操作说明如下.注意拉取文件夹后本地不要去修改文件夹以外的内容。否则无法提交
git init   #本地空白文件 执行 
git remote add origin https:*****.git    #添加远程仓库地址 
git config core.sparsecheckout true   #将sparsecheckout设置成开启状态 
echo resources >> .git/info/sparse-checkout  #设置要获取的文件(文件夹)resources 为文件夹名 
git pull origin master(分支名)    #拉取 
rm -rf .git #删除本地仓库

参考链接 
https://blog.csdn.net/qq_50573146/article/details/125438480)
————————————————————————————————
#git提交指定文件
git提交指定文件,如果此时修改了其他代码,可先提交指定代码,然后忽略不想提交的代码,最后push之后,恢复之前忽略的代码

1 git status 查看仓库状态
2 git add src/components/文件名 添加需要提交的文件名(加路径--参考git status 打印出来的文件路径)
3 git stash -u -k 忽略其他文件,把现修改的隐藏起来,这样提交的时候就不会提交未被add的文件
4 git commit -m "哪里做了修改可写入..."
5 git pull 拉取合并
6 git push 推送到远程仓库
7 git stash pop 恢复之前忽略的文件

原文链接:https://blog.csdn.net/weixin_39031037/article/details/124336259

docker

location / {
try_files $uri KaTeX parse error: Expected 'EOF', got '}' at position 35: …ex index.html; }̲ location @rout… /index.html last;
}

#例如:使用ubuntu镜像,创建一个名为ubuntu1
docker pull ubuntu:18.04
docker run -it --name=ubuntu1 ubuntu:18.04 bash

docker container ls                      # 所有正在启动运行的容器
docker container ls --all                # 所有容器[不管是否在启动运行中]
#安装并使用docker 
docker run -itd --name=ubuntu2 ubuntu:18.04 ubuntu
# 启动一个容器
docker container start <容器名称/容器ID>
# 启动多个容器
docker container start <容器名称/容器ID>  <容器名称/容器ID> <容器名称/容器ID>
#停止容器
docker container stop <容器名称/容器ID>
#杀死容器-相当于强制关闭
docker container kill <容器名称/容器ID>
# 可以进入到容器中,进行测试redis是否已经成功启动
docker container exec -it <容器名称/容器ID> bash
#退出容器
exit
#删除容器
docker  container rm <容器名称/容器ID>
#把容器保存成镜像
docker commit <容器名称/容器ID>  <新镜像名>
#因为我们的api项目已经上传到了真实服务器中,所以我们执行映射api项目的文件到容器中/www/luffyvideo目录下 centos1 运行的容器
docker container run -itd -p 8000:8000 -p 8001:8001 -v /www/wwwroot/news/luffyvideo/studys/luffyvideo_end/luffyapi :/www/luffyvideos centos

通过Dockerfile创建docker [参考](docker部署Django项目 - DeyouKong - 博客园 (cnblogs.com))

docker部署Django项目

1、项目结构:

PetHomeServer
├── Dockerfile
├── manage.py
├── PetHome
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── pip.conf        #非必要,pypi源设置成国内源,加速pip安装
└── requirements.txt    #项目依赖

2、准备工作:

创建一个名为 PetHome 的Django项目,并修改settings.py

ALLOWED_HOSTS = ['*']

3、编写Dockerfile

FROM python:3.6

MAINTAINER Aaron

#设置环境变量
ENV PYTHONUNBUFFERED 1

#设置pip源为国内源
COPY pip.conf /root/.pip/pip.conf

#在容器内/var/www/html/下创建 PetHomeServer 文件夹
RUN mkdir -p /var/www/html/PetHomeServer

#设置容器内工作目录
WORKDIR /var/www/html/PetHomeServer

#将当前目录文件加入到容器工作目录中(.表示当前宿主机目录)
ADD . /var/www/html/PetHomeServer

#利用pip安装依赖
RUN pip install -r requirements.txt

4、利用Dockerfile创建镜像

# 创建名为django_docker_img_PetHomeServer的镜像,版本为v1
sudo docker build -t django_docker_img_pethomeserver:v1 .
# 查看创建的镜像
# sudo docker images

5、利用镜像生成容器并后台运行,容器名为 pethomeserver

sudo docker run -it -d --name pethomeserver -p 8000:8000 django_docker_img_pethomeserver:v1

# 查看所有容器状态sudo docker ps

6、进入容器

sudo docker exec -it pethomeserver /bin/bash

7、运行Django项目

python3 manage.py makemigrations # 非必须执行,已经创建表的不用执行
python3 manage.py migrate # 非必须执行,已经创建表的不用执行
python3 manage.py runserver 0.0.0.0:8000

浏览器访问项目地址

supervisord

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统,这篇文章主要介绍了python测试开发django之使用supervisord 后台启动celery 服务(worker/beat),需要的朋友可以参考下

前言
Supervisor(‘http://supervisord.org/’)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。
它可以很方便的监听、启动、停止、重启一个或多个进程。
用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
centos 安装 supervisord

yum install -y epel-release && yum install -y supervisor

  • 安装完成后在/etc/supervisor 目录下会有个配置文件 supervisord.conf

方法一 /etc/supervisord.conf 中引用

#1./etc/supervisord.conf添加一段

/etc/supervisord.conf


[include] files = supervisord.d/*.ini files =
/www/wwwroot/scripts/supervisord.conf ;添加这一段 添加supervisord.conf目录

2.#创建文件/www/wwwroot/scripts/supervisord.conf并写入

/www/wwwroot/scripts/supervisord.conf ;


[program:celery-worker] command=celery -A hrun2_web worker -l info ;
管理命令,supervisor不支持后台进程 process_name=%(program_name)s
#user=root                                 ;进程启动用户 autostart=true                           ;是否随supervisor启动 autorestart=true                        
;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3                          
;启动尝试次数 stderr_logfile=./celery_worker.log           ;标准输出文件
stdout_logfile=./celery_worker.log        ;标准输出文件 loglevel=info       
;日志的级别   [program:celery-beat] command=celery -A hrun2_web beat ;
管理命令,supervisor不支持后台进程 process_name=%(program_name)s
#user=root                                 ;进程启动用户 autostart=true                           ;是否随supervisor启动 autorestart=true                        
;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3                          
;启动尝试次数 stderr_logfile=./celery_beat.log          ;标准输出文件
stdout_logfile=./celery_beat.log        ;标准输出文件 loglevel=info         
;日志的级别 ```

supervisord -c /etc/supervisord.conf #启动程序

方法二:在项目中我们需要用到此配置,复制一份到项目根目录 supervisord.conf文件内容编写, 前面内容不用改,直接接着在后面写
比如我需要后台启动celery的worker和beat服务

config file, please see: ; http://supervisord.org/configuration.html  
; 前面文档省略,不用删,接着后面写   [program:celery-worker] command=celery -A
hrun2_web worker -l info ; 管理命令,supervisor不支持后台进程
process_name=%(program_name)s
#user=root                                 ;进程启动用户 autostart=true                           ;是否随supervisor启动 autorestart=true                        
;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3                          
;启动尝试次数 stderr_logfile=./celery_worker.log           ;标准输出文件
stdout_logfile=./celery_worker.log        ;标准输出文件 loglevel=info       
;日志的级别
    [program:celery-beat] command=celery -A hrun2_web beat ; 管理命令,supervisor不支持后台进程 process_name=%(program_name)s
#user=root                                 ;进程启动用户 autostart=true                           ;是否随supervisor启动 autorestart=true                        
;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3                          
;启动尝试次数 stderr_logfile=./celery_beat.log          ;标准输出文件
stdout_logfile=./celery_beat.log        ;标准输出文件 loglevel=info         
;日志的级别 ```

常用代码
supervisord -c <地址>/supervisord.conf #启动服务
supervisorctl shutdown #关闭服务
supervisorctl status #查看启动的服务

django之使用supervisord 后台启动celery 服务

celery

celery: 简单、灵活、可靠的分布式定时任务库
django_celery_results: 存储celery执行结果的库
Django_celery_beat: 周期性定时任务库

不错的异步定时参考文章

常用代码块

调用其他文件夹的函数

#调用/www/wwwroot/test/startproject/myprojects/scripts/testspy.py/中的函数
#1.testspy.py文件中的数据
class funca():
    def default():
        print('do funca')
def funcb:
    def default():
        print('do funcb')
#2.功能实现
import sys
sys.path.append("/www/wwwroot/test/startproject/myprojects/scripts")
import testspy
#2.1文件中类中的函数调用
gametimes= testspy.funca
gametimes.default()
#...输出    do funca
#2.2文件中的函数调用
testspy.funcb()
#...输出    do funcb


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值