问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django如何提升响应速度?

发布网友 发布时间:2024-09-07 07:52

我来回答

1个回答

热心网友 时间:2024-11-02 19:59

导读:今天首席CTO笔记来给各位分享关于django如何提升响应速度的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

Django请求与响应(request)与(response)

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API

form标签中的‘GET’和‘POST’

在HTML中,form表单的作用是收集标签中的内容,form.../form中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。

一个表单必须指定两样东西:

form表单使用get方式提交的例子:

可以看见在地址栏会显示参数。

form表单使用post方式提交的例子:

一键多值的getlist方法:

request对象的属性GET、POST都是QueryDict类型的对象

与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

GET属性:

View类视图以请求方式为类方法.

在对应的方式下面编写对应的逻辑函数.

就是将视图中的方法以类的方式书写逻辑。

View类视图的引用.

在url.py中配置路由是通过:as_view()

Django在处理文件上传的时候,文件数据被保存在了request.FILES,FILES中的每个键为inputtype="file"name=""/中的name

设置文件的存储路径:

1.在项目根目录下static中创建media文件夹

2.图片上传后,会被保存到“/static/media/文件”

3.打开settings.py文件,增加media_root项

FILES只有在请求的方法为POST且提交的form带有enctype="multipart/form-data"的情况下才会包含数据。否则,FILES将为一个空的类似于字典的对象

文件上传视图函数:

HttpResponse对象:

HttpResponse的子类:

返回数据的响应函数有:

HttpResponse()返回简单的字符串对象

render()渲染模板

redirect()重定向

JsonResponse()返回json数据

HTTP协议:

HTTP(超文本传输协议)是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

客户端和服务器都是怎么记录登录的状态的呢?

浏览器中的----cookie:(请自行查找)

注意:设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的.

虽然cookie可以保存状态,但注意不要存储敏感信息.

Django使用S3服务

static静态文件和media多媒体(多为用户上传)需要分目录存储,新建s3utils.py文件:

settings.py添加S3配置:

因为S3开放了本机访问权限,因为不需要认证。

需要认证的添加KEY_ID和ACCESS_KEY:

运行collectstaticDjango管理命令:

静态文件应该以为结尾。

任何上传的文件FileField或ImageField模型上的属性都应该在中。如果这些模型属性指定upload_to路径,则存储于/media/***。

如上配置配置成功后,资源访问域名是

发现资源加载速度慢了很多,17K耗时将近两秒,而且不同区域访问不稳定。

此时就应该祭出CDN了知乎CDN

CDNHOST:http://***.cloudfront.net/,解析至域名下,settings配置:

重启后资源通过**访问,速度有了明显的提高。

AWS_S3_SECURE_URLS:是否启动安全网址,即是否使用https,默认为True,因为https需要申请证书等等一系列处理,暂时设置为False后将使用http协议。

使用staticfiles

常用命令:

上传目录需要添加参数--recursive

AWSCLI命令参考:AWSCLICommandReference

参考:

django-s3-temporary

cname-support-aws_s3_custom_domain-doesnt

django-wont-serve-static-files-from-amazon-s3-with-custom-domain

Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files

pycharm已经安装了django并成功新建了django项目,新建第二个django项目的又在安装django?

新建速度慢是因为你可能用了默认的源,默认的源是在国外的,速度比较慢。你可以加一个国内的镜像源,以后不光安装Django,安装别的需要用到的各种包,都会速度比较快。

添加国内源方法:

点击文件菜单中的设置,进入设置界面,然后点右边这个+号就可以安装Django或者别的包

点开这个加号后,点管理源

然后点右边的加号添加国内的镜像源,我添加了两个,一个是豆瓣,一个是阿里云的

还有一些常用的源,我贴在这里,仅供参考

#清华大学

#阿里云

#豆瓣

#中国科学技术大学

#华中科技大学

greaterwms是什么??

聚商汇WMS--开源仓库管理系统

项目介绍:

完全开源仓储管理软件,遵循ApacheLicense2.0协议,前后端分离,且完全开源,API使用restful协议,方便二次开发,前端代码使用quasar进行构建,后端使用PythonDjango3.1,利用API,可以支持多仓,波次发货,合并拣货,Milk-Run等业务模型。

软件著作权编号:2018SR517685

GitHub地址:

GitHubgithub.com/Singosgu/GreaterWMS

Demo地址:

GreaterWMS--OpenSourceWarehouseManagementSystem

商务联系:mail@56yhz.com

技术交流:GreaterWMS-01(加微信进群)

项目初衷:

我在供应链行业工作了15年,发现在我们这个专业的领域,没有一款高自由度、高自定义化的软件,来深度支持我们企业的业务。大多数软件都是闭源的,而且很难去做二次开发,即使开发,周期也是非常长,开发失败的案例也是比比皆是。由于企业选择了一款软件后,其二次开发也会被开发公司绑定,至于二次开发费用,只能说呵呵。所以,我设计了这个聚商汇WMS,为的是做到一款高自由度,高自定义开发的仓库管理软件,来深度支持企业的业务。

愿景:如果你从事着非IT行业的工作,而你又热爱你的行业,那就用科技去改变他。

生命周期

V1.0.0--2019年7月~2020年12月(由于1.0.0版本的二次开发设计较为复杂,故2.0重新编写)

V2.0.0--2020年12月~2021年3月(重新编写业务逻辑,原生自带API开发文档,加入实时通信,方便企业用户互相沟通)

V2.1.0--2021年3月~2021年6月(加入了客户与企业之间的实时互动,增进企业与客户之间的业务联系,实现VMI)

V2.2.0--2020年6月~2021年9月(加入了供应商与企业之间的实时互动,增进企业与供应商之间的业务联系,实现Milk-Run和看板拉动)

V2.3.0--2021年9月~2021年12月(库存管理雏形,初步加入神经网络,深度学习库存变化)

V3.0.0--2021年12月~2022年3月(完全植入神经网络,让上下游企业可以以最低的成本运营整体的业务)

V3.1.0--2022年3月~2022年6月(区域仓库业务布局,通过深度学习,实现多仓运营,成本最低化)

开发环境:

Python版本为V3.8.0+

Django版本为V3.1.0+(该版本Django才原生支持异步实时通信)

Django-rest-framework版本为V3.12.2+(更高版本的Django-rest-Framework对Django3的兼容比较好)

Django-silk版本为V4.1.0(如果是部署上线,请关闭silk,silk仅为调试API接口速度用,有可能会泄露用户信息)

Quasar版本为V1.7.2+(可以查看Quasar官网,来编辑GreaterWMS前端代码:Quasar官网)

Vue版本为V2.6.0+(尽量不要使用Vue3,因为开发环境没有使用Vue3,不知道会出现什么问题)

API,遵循RESTful架构

构建命令:

下载代码:

gitclone

安装Python库:

pipinstall-rrequirements.txt

注意:安装需要Twisted库,这个库有时候会安装不上,需要下载下来本地安装

下载地址:TWISTED

pipinstallTwisted{你下载下来的版本名称}

注意:本地安装需要注意路径

初始化数据库:

pythonmanage.pymakemigrations

迁移数据库:

pythonmanage.pymigrate

创建数据库,Django默认使用sqlite3作为数据库,如果需要mysql数据库,请在greaterwms/settings.py里面配置DATABASE

开发服务器运行:

开发运行:

daphne-p8008greaterwms.asgi:application

生产服务器运行:

supervisor守护进程:

pipinstallsupervisor

使用supervisor来守护Django进程,再使用Nginx做反向代理,至于superevisor的教程有很多,这里不做讲解

Nginx支持:

推荐使用Nginx进行部署,部署的时候需要指定WebSocket链接,如果不指定,实时通信功能将报错

另需要修改axios_request.js里的ws_url

##示例更改前

constbaseurl=''

constwsurl='ws://127.0.0.1:8008/'

##示例更改后

constbaseurl='https://你的域名/'

constwsurl='wss://你的域名/websocket/'

如果服务器启用了SSL,请使用https和wss,如果没有启用SSL,则使用http和ws

修改后需要重新build前端代码

开发扩展:

因为使用的前后端分离的设计,所以可以通过API,开发更多的软件应用

物流智能AGV

AGV的项目也已经开源,由于场地受限,仅实现智能发货,定点回库,使用的循迹感应器,超声波避障感应器,红外避障感应器,所有的指令通过网络传输,AGV绑定MAC地址和IP地址,保证了安全性,前提是,你需要有一个树莓派。

进销存

可以直接当一个进销存系统使用,简化仓库库位设置等操作即可。

APP和小程序

Quasar原生可以直接打包成IOSAPP和AndroidAPP

小程序的开发可以通过API开做二次开发,但小程序不支持put请求,所以需要自己再写一个请求接口。

API的组合可以达到100万种,这样我们可以根据查询请求,来获得实时报表和数据监控

供应链管理系统

产品的数量,创建时间,最后使用时间是各方面统计的,所以可以方便采购计划和调拨计划进行库存的分析

V2.3.0及其以后的版本,将自带深度学习分析,所以可以直接使用分析结果作为供应链管理系统工具使用

多仓管理

OPENID为用户的数据唯一标识,数据组统一标识为APPID,所以很方便可以实现多仓管理

波次拣货,发货

可以设置固定时间向服务器发出请求,从而达到波次拣货的功能

也可以直接使用任务工作,通过API查询分析结果来实现,推荐使用APScheduler

~~~pythonpipinstallapscheduler~~~

Milk-Run

V2.2.0及其以上版本,将原生支持此功能

如果现在就需要这个业务,可以根据API调用库存消耗,来实现此功能

VMI

V2.1.0及其以上版本,将原生支持此功能

如果现在就需要这个业务,可以根据API调用库存消耗,来实现此功能

拣货路线优化

现在的拣货路线是按照库位排序

V2.3.0以后版本将原生支持此功能

如果现在需要这个业务,可以根据每天的拣货明细,调用API来实现此功能

开发指南:

baseurl

是发起请求的基本网址,如果是本地调试,则默认为?,如果部署在服务器,则需要将其改为你的网站访问url

修改方式为,修改axios_request.js,注意websocket的修改之前已经提到了

Django-silk

django-silk为开发时的调试工具,可以统计每个接口的响应速度,如果需要部署到生产环境,请删除Django-silk相关配置,因为会有泄露用户信息的风险,或者直接修改Django-silk库,让用户只能看到自己的请求数据

数据库存储

数据库设计时考虑到数据迁移等问题,所以只有users里面的user_id和Django自带的user_id做了外键,其余所有字段全部没有使用外键,方便数据备份和数据库迁移

数据库是4段式设计

验证数据用户归属

验证数据安全性

验证数据是否可以存入数据库

存入数据库,并返回Response

关于数据传输

需要在所有的请求头headers里面加入token值,这个值就是用户的数据唯一标识OPENID

所有的数据传输需要设定content-type为application/json

OPENID

OPENID是注册用户数据的唯一标识,当管理员直接注册时,会有developer=1这个管理员标识。

你可以根据developer标识来做自定义二次开发

APPID

APPID是用户数据组唯一标识

如果需要多公司运营,或者多仓运营,可以通过APPID做统一链接,来实现多公司,多仓操作

用户权限

未对用户权限做过多限制,请根据自身的业务需要,做二次开发限制

业务流程:

管理员

点击注册,可以注册成为管理员账号,从而实现初始化程序设置

注册后会得到2个ID和1个开发者标识,OPENID是用户数据组唯一标识,通过OPENID绑定此OPENID下所有的数据,APPID是用户组数据唯一标识,通过APPID来实现多公司,多仓库功能,Developer标识是个布尔值,True代表这是个管理员账号

用户登入分2种:

使用OPENID和员工名称直接登入

管理员使用账号和密码登入

登入后前端会存储登入信息

可以通过查看我的OPENID来查看用户数据组的OPENID

如果需要多公司,多仓库操作,注意需要更改OPENID

更多管理员权限,请自行开发

员工管理

注册管理员后,新建一个员工

员工有2个字段,Staff_name(用于员工登入),Staff_type(员工类型来控制员工的权限)

系统没有对员工权限做任何限制,如果需要员工权限,请根据企业业务模型,自行修改Templates

点击Edit,可以修改员工信息

点击Delete,可以删除员工信息,系统后台会将Is_delete调成True

点击Contact:

可以直接和员工实时聊天,但是不可以和自己聊天

可以新建一个备忘录员工,这样做其实是当成备忘录使用

在个人中心,可以查看最近的联系人

Message标识会提醒你现在有多少未读消息

司机管理

司机管理只会在发货流程中用到

你需要知道货物是哪个司机提货取走的

仓库设置

Warehouse

仓库的创建只可以创建一个仓库,现在可以创建多个,但是只有第一个会起作用

如果需要多仓处理,可以通过APPID进行二次开发,也可以直接重新创建一个管理员账号

仓库的城市一定要填写,这是用来计算运费的

Bin_Property

库位属性决定了仓库中货物属于什么属性的货物

4种属性:破损(Damage),锁定(Holding),质检(Inspection),正常(Normal)

Beta版中,属性可以修改和删除,正式版将无法删除和修改

所有的发货,都只会匹配Normal库位的货物

收货上架和移库,都会根据库位属性,直接修改库存数量,仓库的库存数量不会出现负数

Bin_Size

库位的尺寸是帮助操作人员查看货物是否可以放入库位

现行的版本没有对上架和移库尺寸做检查,将来会加入自动检查

Bin_Set

库位设置是必须的,通常库位设置是横纵横纵,比如A010101,即A横01纵01横01纵

库位的设置需要设置库位属性和尺寸,属性很重要,他决定了此库位的货物是否为正常货物

基础设置

Company

公司基本信息的创建只可以创建一个公司,现在可以创建多个,但是只有第一个会起作用

如果需要多公司处理,可以通过APPID进行二次开发,也可以直接重新创建一个管理员账号

公司的城市一定要填写,这是用来显示在收发货单上的

Supplier

供应商的基础信息

供应商的城市一定要填写,这是用来显示在收货单上的,并且也是要自动计算运费的

Customer

客户的基础信息

客户的城市一定要填写,这是用来显示在发货单上的,并且也是要自动计算运费的

商品管理

Unit

商品的单位,系统会初始化创建一些,但可以自己添加和修改

Class

商品的类型,可以自己添加和修改

Color

商品的颜色,系统会初始化创建一些,但可以自己添加和修改

Brand

商品的品牌,可以自己添加和修改

Shape

商品的形状,系统会初始化创建一些,但可以自己添加和修改

Specs

商品的规格,可以自己添加和修改

Origin

商品的产地,可以自己添加和修改

GoodsList

商品的列表

固定资产

Capital

固定资产创建,没有做过多拓展,只是记录使用

可以统计托盘账目等

库存管理

StockList

在库的货物总的库存数据量

Onhand_stock现有的库存数量

CanOrder,可以用于下单发货的库存数量,因为有些货物已经被下了订单,虽然有现有库存,但是不可以再被订货

OrderedStock,已经被下单的货物数量

ASNStock,已经下了到货通知书,但还没有确认到货通知书的货物数量

DNStock,已被下单,但是还没有确认订单数量

PreLoad,预计到货货物数量

PreSort,已经到货,卸货完成,等待分拣的货物数量

SortedStock,货物分拣完成,等待上架的货物数量

PickStock,发货单生成了拣货单,等待拣货的货物数量

PickedStock,已经拣货完成,等待和司机交接的货物数量

BackOrderStock,欠货订单数量

BinStock

TotalStock,这个库位该产品的所有库存数量

PickStock,这个库位需要拣货的数量

PickedStock,这个库位拣货完成的数量

MoveToBin,移库,移库后,会根据库位属性,直接更新库存数量,如果库位全部移空,则该库位会更新为空库位

EmptyBin

空库位明细

OccupiedBin

非空库位明细

收货管理

ASN到货通知书状态

ASNStatus=1,ASN到货通知书创建完成,状态1是唯一可以删除和修改ASN信息的状态,他会显示在PreDelivery中,即有了到货通知书,但是还没有到货,点击ConfirmDelivery,即确认货物已经到达,ASNStatus更新到2,此时已经无法再修改ASN信息

ASNStatus=2,拓展开发为司机到货排队,如果我们有很多司机到货,这可以做成一个排队系统,同时也可以让采购和销售看到到货信息,减少不必要的邮件和电话沟通,点击FinishLoading,即确认货物已经卸货完成,ASNStatus更新到3,货物信息会出现在Sorting,此时的ASN状态表示,货物已卸到仓库,等待分拣

ASNStatus=3,货物分拣是必须的一个流程,没有货物分拣,货物是无法上架的,上架的原则就是货物整理好,摆放到相对应的库位上,点击ConfirmSorted,ASNStatus更新到4,即确认分拣完成,等待

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 凯恩蒂数控车床攻牙代码是啥?跪求 为什么会有吐不完的痰 喉咙老是有粘痰吐不完怎么回事 ...吐出来的是白色的和唾沫差不多。怎么回事啊 吐不完的痰,有什么办法 孕妇能不能吃巧克力呢 孕妇吃巧克力的好处 勇者斗恶龙8的游戏发行 孕妇可以吃巧克力吗?突然很想吃甜食,需要注意什么呢? 崎元仁成长历程 金鱼要产卵了有什么表现? 金鱼产卵是什么样子 山西明泰食品有限公司所属集团 西安德宇软件科技有限公司五笔录入主要做什么,月工资怎么样。有没有晚 ... 西安德宇软件科技有限公司是电子厂吗 西安德宇软件科技有限公司电话是多少? 西安德宇机械科技有限公司怎么样? 含有一对近义词的成语有哪些 讽刺那些墨守成规、迷信教条而不顾客观实际,办事死板的人,用哪个寓言来... 戈尔集团有限公司怎么样? 元宵前后共团圆 (打一字)谜底及原因 pdf怎么直接修改 怎么修改pdf文件内容 修改pdf文件内容的方法 ...直线方程可以写成az+az=c,其中a不等于0,a为复常数…c... 厄米算符与厄米共轭算符,两者有什么区别? ...写成zz(共轭)+a(共轭)z+az(共轭)+c=0(a为复常数c实常数 矩阵A等价的性质有哪些? 变压器功率怎样计算? 读研地区因素很重要吗 南京如何申请劳动仲裁,流程是什么? 读研是学校专业名气重要还是地理位置更重要? 读研地域重要吗 为什么美国读研选校一定一定要重视地理位置 在国外读本科的学校和读研的学校 是本科的学校更重要还是读研的学校更重... 在美国生孩子的好处究竟有多少?值得这么多中国家庭踏上这条路 宠物医院要多少钱才能开起来? 美福嘉儿美国月子中心在美国居住环境怎么样? 宠物医院和宠物诊所一个意思吗·我的宠物有病了·去医院好还是诊所好... ...喜欢待在自己的窝里,大概是什么病?如果去宠物诊所大概要花多少钱_百... 宠物小诊所大概需要多少钱 大花惠兰疾病处理