2020年即将结束,是时候分析2020年最需要的Django软件包了。
在Google Cloud上有相当详细的PyPI软件包存储库下载统计信息。 让我们探索一个简单查询的结果,该查询收集名称为django的任何软件包的下载总数。
1 2 3 4 5 6 7 8 9 |
SELECT file.project, COUNT(*) as total_downloads FROM `the-psf.pypi.file_downloads` WHERE DATE(timestamp) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 360 DAY) AND CURRENT_DATE() AND file.project like '%django%' GROUP BY file.project ORDER BY total_downloads DESC LIMIT 100 |
下载次数超过了最活跃项目中使用的某些软件包,并且没有提供项目用户的真实数目。 但是我认为整个数据集可以很好地概述2020年的使用情况。如果您知道列表中没有好的图书馆,请在评论中注明。 我很乐意用它来更新文章!
0. Django
2020年,Django本身被下载了6550万次! 如果将其与2019年的4100万次下载进行比较,这将是一个惊人的巨大提升。这是否意味着Django获得了+ 50%的流行度,或者CI / CD管道在开发实践中变得更加普及了?
1. REST
一半的Django安装是与REST框架相关的。 djangorestframework软件包的下载量超过3500万次。 令人惊讶的是,旧的,错误的ddjango-rest-framework包被请求了500万次。
REST框架形成了它自己的一组配套软件包,它们也排在所有下载的顶部。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
- djangorestframework 34 227 575 - django-cors-headers 17 980 262 - django-rest-framework 5 012 054 - django-rest-swagger 3 834 364 - djangorestframework-jwt 3 663 231 - djangorestframework-simplejwt 3 285 074 - graphene-django 2 447 735 - django-rest-auth 2 238 789 - djangorestframework-camel-case 1 913 461 - djangorestframework-csv 1 819 678 - django-tastypie 1 305 827 - djangorestframework-stubs 973 349 - djangorestframework-filters 902 035 - djangorestframework-xml 891 171 |
更新:djoser — REST框架的身份验证程序包具有750208次下载,与前100名相比略有下降。
2.开发实用程序
开发过程助手是一种非常流行的软件包类别。 静态类型的增长趋势将类型推断django-stubs包推入了前100名。似乎,不是每个人都可以将Django升级到最新版本。 在这种情况下,django-compactpackage有助于在遗留项目中使用现代的Django新功能
1 2 3 4 5 6 7 |
- django-extensions 16 406 788 - django-debug-toolbar 10 453 779 - pylint-django 5 776 115 - django-waffle 2 239 980 - django-stubs 2 010 553 - django-silk 1 738 951 - django-compat 1 040 285 |
3. ORM扩展名和表单/序列化器字段
这就是我们最喜欢Django的地方:丰富的查询和许多本机DB类型支持开箱即用,并带有许多第三方软件包。
有时甚至很难选择。 您将使用什么来获得树结构支持-django-treebead或django-mppt? 如何保持更改历史记录-在具有django-reversion的单个表中,还是为每个具有django-simple-history的模型制作一个单独的表?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
- django-filter 16 706 350 - django-model-utils 5 855 904 - django-timezone-field 5 135 947 - django-import-export 4 059 689 - django-phonenumber-field 3 788 927 - django-mptt 3 530 540 - django-countries 3 395 824 - django-simple-history 2 929 907 - django-taggit 2 500 534 - django-mysql 2 429 771 - django-polymorphic 2 424 916 - django-localflavor 2 395 908 - django-reversion 2 141 762 - django-picklefield 1 998 291 - django-treebeard 1 960 088 - django-dirtyfields 1 752 146 - django-jsonfield 1 382 853 - django-bitfield 1 375 136 - django-bulk-update 1 272 312 - django-modeltranslation 1 093 761 - django-modelcluster 907 941 |
4.测试
最近有关将pytest-django嵌入Django核心的讨论表明缺少一些重要功能。 即便如此,pytest是Django项目中最受欢迎的替代测试运行器。
1 2 3 |
- pytest-django 12 145 477 - django-nose 3 378 225 - django-coverage-plugin 1 225 145 |
5.表格
表单是Django的一个很棒的部分,它大大减少了手动HTML编码。 但是您无法在完美上有所进步。 大量的程序包允许在Django中调整表单渲染,并将于2020年投入使用。
1 2 3 4 5 6 7 8 9 |
- django-crispy-forms 5 130 503 - django-widget-tweaks 2 603 999 - django-formtools 2 348 083 - django-ckeditor 1 720 610 - django-autocomplete-light 1 425 283 - django-bootstrap4 1 121 947 - django-bootstrap3 1 119 687 - django-multiselectfield 1 100 977 - django-tinymce 963 423 |
6.缓存
Django开箱即用,具有完善的Memcache Cache后端集成,但是Redis仍然很流行,可以通过两个不同的第三方软件包之一启用。
它并不取决于您用于缓存后端的内容:django-cacheops提供了便捷的QuerySet缓存和自动的,由事件驱动的细化失效快捷方式。
1 2 3 |
- django-redis 9 400 461 - django-redis-cache 2 083 225 - django-cacheops 1 130 117 |
7.设定
我们都希望Django默认设置在默认情况下对部署更友好,但是使用django-environ的Django项目似乎只是其中的一小部分。 其他人是否对os.environ.get满意还是不遵循十二要素应用程序方法?
1 2 3 4 |
- dj-database-url 7 573 407 - django-appconf 6 783 029 - django-environ 5 588 732 - django-constance 1 159 432 |
更新:这篇文章的初始版本,错过了dj-database-url软件包的使用。
8.后台工作
在许多Django项目中,它可能是最重要的功能,但是很难估计实际使用情况。 Celery库的最新版本可以直接使用,而无需任何其他Django专用胶水。 Celery是Python世界中最流行的分布式任务队列。 它具有3500万次下载。
1 2 3 4 5 |
- django-celery-beat 4 427 330 - django-celery-results 3 308 005 - django-celery 1 492 722 - django-crontab 1 271 395 - django-rq 972 330 |
更新:其他芹菜竞争者,离下载数不远-342536 huey -330942
9.认证和授权
外部服务集成是身份验证类别中最需要的功能。 行级权限领导者django-guardian多年来一直位居榜首。
1 2 3 4 5 6 |
- social-auth-app-django 4 228 917 - django-allauth 3 563 403 - django-oauth-toolkit 2 851 276 - django-otp 1 945 657 - django-guardian 1 797 562 - django-auth-ldap 1 193 910 |
10.快捷方式和帮手
Django核心是否包含用于舒适开发的所有内容? 还是我们仍然缺少一些方便的快捷方式,这些快捷方式将实用程序包带到了下载列表的顶部?
1 2 3 4 |
- django-ipware 4 102 954 - django-braces 2 250 861 - django-user-agents 1 468 511 - django-annoying 867 588 |
11.前端工具
您对前端集成类别仅排名第11感到惊讶吗? 我也是。 似乎大多数项目都使用本机JavaScript工具,而不必理会Django集成。
1 2 3 4 |
- django-js-asset 3 924 030 - django-webpack-loader 3 439 016 - django-compressor 2 969 084 - django-pipeline 1 085 094 |
12.安全性
默认情况下,Django包含ClickJacking和CSRF攻击防护。 第三方程序包提供通用的速率限制和登录尝试限制。 django-csp甚至进一步限制了页面上JavaScript的执行,从而降低了内容注入漏洞(例如跨站点脚本,
1 2 3 |
- django-axes 2 071 982 - django-ratelimit 1 341 813 - django-csp 1 339 511 |
13.邮件
同样,使用云服务支持扩展Django核心功能的软件包类别。 单个Amazon SES服务似乎与所有其他交易邮件服务一起受欢迎。
1 2 |
- django-ses 1 992 158 - django-anymail 1 858 837 |
14.监控
改善Django监控的辅助工具。 我们在这里缺少Sentry,因为很难在Django项目中拆分其用途,但是肯定地说,Sentry在一年中有4200万次下载,是其同类产品的领导者
1 2 3 |
- django-health-check 1 933 588 - django-prometheus 1 742 891 - django-log-request-id 1 041 023 |
15.Administration
多年来,Django管理员变得越来越好。 不需要太多的软件包即可对其进行更多改进。 但是,具有漂亮外观的样式仍使django-grappelli居于首位。
1 2 3 4 |
- django-grappelli 1 518 684 - django-admin-rangefilter 1 385 710 - django-admin-sortable2 1 012 336 - django-object-actions 1 015 603 |
16.搜索
最后一个类别-全文搜索支持。 有没有想过与ElasticSearch一起使用的库是什么? 我也是。
1 2 |
- django-haystack 1 255 008 - django-elasticsearch-dsl 934 495 |
其他
那些非常棒的软件包在TOP 100下载中没有任何竞争对手。
使用django-storages将静态文件和媒体文件保存在云中,使用django-tables2,django-classy-tags和django-sekizai渲染更干净的模板,并使用django-fsm组织工作流程。
django-heroku是TOP 100中唯一有助于Django部署的软件包。 这样的任务不是那么复杂,以至于没有其他软件包被创建吗?
1 2 3 4 5 6 |
- django-storages 13 080 397 - django-tables2 1 439 101 - django-fsm 1 395 410 - django-classy-tags 1 307 024 - django-heroku 1 193 323 - django-sekizai 1 030 699 |
奖励+2
几个软件包的名称中没有提及Django。 Wagtail的下载量是django-cms的两倍,因此绝对应该包含在TOP 100中
Django的最新版本具有内置的异步支持。 这是否意味着渠道套餐的受欢迎程度会下降?
1 2 |
- channels 3 050 679 - wagtail 1 010 017 |
这就是Django Universe中按下载量计的前100名软件包。
尊敬的Django开发人员,这就是我们在2020年的工作方式。您对明年的发展趋势有一个了解吗? 我们缺少什么包裹? 最近是否有任何新的即将创建的工具? 在评论中发布,以使他们在文章更新中加薪。
祝您编码愉快,圣诞快乐,新年快乐!
原文:https://viewflow.medium.com/top-102-most-downloaded-django-packages-in-2020-108f0cd372e7