JetBrains logo

2022 Django 开发者调查

这是由 Django Software Foundation 和 JetBrains 于 2022 年 9 月至 10 月开展的第二次年度 Django 开发者调查。来自 248 个国家和地区的 4900 名 Django 用户和爱好者参与了调查,帮助我们更好地了解框架及其生态系统的现状。

如需了解最新发现,请转到 2023 Django 开发者调查或者查看首次开展的 2021 Django 开发者调查

您主要出于什么目的使用 Django?

您使用哪个(哪些)版本的 Django?>100%

55%

0%

4.1

34%

0%

4.0

47%

75%

3.2

10%

30%

3.1

13%

39%

3.0 或更低版本

大多数用户迁移到了最新的 4.1 版本,但几乎一半的 Django 开发者仍然依赖 3.2 LTS 版本。

经验丰富的 Python 开发者使用 Django 3.1 及更低版本,而新手仅使用最新版本。

对于新项目,您使用什么版本的 Django?

70%

最新的稳定版本

28%

最新的 LTS 版本

3%

其他

您多久升级一次项目中的 Django?

44%

每个稳定版本

14%

每个月度修正版本

30%

仅 LTS

5%

不受支持的 Django 版本

7%

其他

Django 开发者通常通过稳定版本 (44%) 或仅通过长期支持 (LTS) (32%) 来升级项目。

技术和框架

您使用什么后端数据库?> 100%

79%

PostgreSQL

40%

SQLite

28%

MySQL

10%

MariaDB

2%

Oracle

2%

无/我不确定

6%

其他

Django 正式支持以下数据库:PostgreSQL、SQLite、MySQL、MariaDB 和 Oracle。自去年的调查以来,PostgreSQL 变得更受欢迎,份额增加了 2 个百分点。

只有 6% 的开发者使用不受 Django 支持的数据库。这些开发者最常提到的数据库是 MongoDB。

您使用什么缓存后端?> 100%

54%

Redis

17%

本地内存

16%

数据库

16%

Memcached

8%

文件系统

1%

其他

27%

Redis 缓存最受欢迎,超过半数的 Django 开发者都在使用。
将 Redis 作为缓存后端的开发者比选择其他缓存方法的开发者更经常使用 TypeScript。

PostgreSQL 数据库用户更喜欢 Redis 和 Memcached。

在 SQLite 用户中,份额最大的是文件系统,其后是本地内存。

您使用什么 GeoDjango 后端?>100%

72%

无/我不确定

22%

PostGIS

6%

MySQL

2%

SpatiaLite

1%

Oracle

1%

其他

GeoDjango 后端的使用与数据库后端的选择高度相关。

您认为哪些 Django 贡献应用最有用?> 100%

85%

admin

80%

auth

50%

postgres

50%

sessions

48%

staticfiles

33%

messages

26%

contenttypes

25%

redirects

17%

humanize

16%

sites

11%

GeoDjango

10%

sitemap

3%

flatpages

3%

syndication

1%

其他

5%

无/我不确定

超过 80% 的受访者选择了 admin 或 auth,使其连续两年成为最受欢迎的 contrib 应用。

您最喜欢的 3 个核心组件是什么?> 100%

76%

模型

50%

管理员

33%

身份验证

31%

迁移

25%

视图

14%

Django 管理命令

13%

表单

13%

模板

10%

第三方生态系统

8%

URL

5%

信号

5%

测试

4%

缓存

2%

我不确定

1%

其他

受访者最喜欢的核心组件是模型。76% 的 Django 用户选择了它,比去年提高了 4 个百分点。

您使用什么模板引擎?> 100%

81%

Django 模板

14%

Jinja2

2%

其他

13%

您使用什么测试框架?> 100%

41%

pytest

36%

unittest

31%

pytest-django

21%

coverage

10%

Selenium

6%

tox

5%

Cypress

3%

Playwright

3%

django-test-plus

2%

nose

1%

TestCafe

1%

其他

26%

您使用哪种(哪些)JavaScript 框架?>100%

36%

37%

React

32%

37%

jQuery

25%

28%

Vue

16%

5%

htmx

8%

10%

Angular

2020 年发布的 htmx 现在得到更多关注。自我们 2021 年 8 月的上一次调查以来,这个 JavaScript 框架的使用率增加了两倍。此外,Alpine.js 的份额翻了一番,不过这个值仍然太小,无法得出具体结论。

与去年的结果相比,jQuery 的份额下降了 5 个百分点。

值得注意的是,曾经的领先框架开始被新兴框架所取代。

您使用哪种(哪些)CSS 框架?>100%

62%

68%

Bootstrap

22%

15%

Tailwind CSS

13%

14%

纯 CSS

9%

12%

Material Design/Lite

6%

6%

Bulma

自去年以来,Tailwind CSS 的份额增加了 7 个百分点,从 15% 上升到 22%。Tailwind CSS 用户往往比 Bootstrap 用户更倾向于使用 JavaScript 框架,例如 Alpine.js、htmx、React 和 Vue。Bootstrap 用户使用 jQuery 的频率几乎是 Tailwind 用户使用它的两倍。

您最喜欢的 5 个第三方 Django 软件包是什么?> 100%

60%

djangorestframework

28%

django-celery

28%

django-debug-toolbar

18%

django-cors-headers

17%

django-filter

17%

django-allauth

16%

pytest-django

16%

django-redis

16%

django-extensions

15%

django-crispyforms

您使用哪些异步技术?> 100%

25%

ASGI

23%

asyncio

18%

FastAPI

15%

Channels

15%

Uvicorn

11%

Django 的异步视图

9%

Daphne

5%

asgiref

4%

Starlette

1%

Hypercorn

1%

Anyio

4%

其他

47%

一半的 Django 开发者编写异步 (async) 视图。然而,受访者是否使用异步技术并不一定与其开发经验相关。

在此处详细了解 Django 异步支持

语法和文档

您当前是否在 Django 代码中使用类型提示?

更有经验的开发者使用类型提示的次数明显多于经验较少的开发者。总体而言,46% 的 Django 开发者使用类型提示。

您使用什么类型检查器?>100%

35%

Mypy

23%

Pyright / Pylance

4%

Pytype

5%

其他

40%

您为您所参与的软件的文档做出了多少贡献?

22%

许多,或者经常

28%

一些,或者有时

26%

一点,或者几乎从不

25%

无,或者从来没有

对于您参与的软件,你们使用什么来托管和发布文档?>100%

43%

Readme

29%

自托管

21%

阅读文档

19%

GitHub Pages

3%

GitBook

8%

其他

23%

我们不发布文档

更大的团队更有可能记录软件,比如主要由较大团队使用的 Github Pages。

较小的团队发布文档的频率更低。

你们使用什么系统和语言来创建和构建文档?>100%

64%

Markdown

37%

Swagger

24%

Sphinx

17%

rST

14%

Postman

13%

wiki

8%

其他

19%

对于您参与的软件,你们在文档中采用什么原则?>100%

81%

没有明确采用信息架构

27%

正式文档审查

14%

基于主题的结构

13%

没有相关文档的代码将不会被合并

12%

明确的贡献者风格指南

10%

包容性语言

3%

Diátaxis

1%

DITA

4%

其他

语言和其他 Web 框架

Python 是您的主要编程语言吗?

90%

主要

10%

辅助

除 Python 外,您还使用哪种(哪些)其他编程语言?> 100%

75%

JavaScript

67%

HTML / CSS

49%

SQL

39%

Bash/Shell

25%

TypeScript

15%

C/C++

13%

Java

12%

PHP

12%

Go

9%

C#

8%

Rust

3%

Ruby

3%

R

7%

其他

3%

您的主要编程语言是什么?> 100%

23%

JavaScript

12%

Java

11%

TypeScript

10%

PHP

9%

C/C++

7%

C#

5%

Go

3%

HTML / CSS

2%

Rust

2%

SQL

2%

Ruby

1%

Bash/Shell

1%

R

11%

其他

此问题仅向那些选择 Python 作为辅助语言的人展示。

除了 Django,您还使用什么 Web 框架?> 100%

33%

React.js

29%

Flask

25%

JQuery

25%

FastAPI

24%

Vue.js

8%

Express

8%

Angular

4%

Spring

4%

Laravel

3%

ASP.NET Core

您最常用的 Web 框架是什么?> 100%

83%

Django

5%

React.js

2%

Vue.js

2%

FastAPI

1%

Flask

1%

Angular

1%

Spring

5%

其他

资源

您使用以下哪项来关注 Django 开发?> 100%

59%

djangoproject.com

26%

Stack Overflow

20%

Reddit

20%

Twitter

18%

YouTube

15%

Django News 简报

11%

Hacker News

11%

朋友

10%

Django 论坛

9%

播客

7%

RSS

6%

Google 网上论坛

4%

Discord

1%

IRC

3%

其他

16%

我不关注 Django 开发

YouTube 和 Stack Overflow 的最大用户群是工作不到 2 年的开发者。

有 6 年或更多工作经验的人几乎从不使用 YouTube 来学习 Django。他们通常会阅读 djangoproject.com 和 Django News。

您更喜欢使用以下哪一项来学习 Django?> 100%

80%

djangoproject.com

45%

博客

40%

YouTube

31%

书籍

18%

朋友/同事

9%

付费视频

5%

播客

5%

其他

3%

请考虑一下您阅读或关注的关于 Django 的网络资源,不包括官方 Django 频道> 100%

50%

YouTube 频道

33%

博客

33%

播客

16%

Twitter 账号

12%

论坛

19%

其他

Python 版本

您使用哪个(哪些)版本的 Python?> 100%

58%

13%

3.10

51%

60%

3.9

36%

53%

3.8

17%

31%

3.7

8%

21%

3.6 - 3.0

根据官方 Python 开发者调查,Django 开发者总体比 Python 开发者更喜欢使用最新的 Python 版本。3.9 版的使用情况尤其明显,Django 开发者的使用率 (51%) 总体比 Python 开发者 (22%) 高出 29 个百分点。

您通常用什么来升级您的 Python 版本?>100

39%

操作系统提供的 Python

37%

Python.org

32%

Docker 容器

28%

pyenv

6%

Anaconda

4%

从源代码构建

3%

通过云提供商自动更新

2%

其他人为我管理 Python 更新

3%

其他

2%

我不更新

与使用操作系统提供的 Python 的开发者相比,访问 python.org 的开发者往往更频繁地将 Python 升级到各个稳定版本。

位于亚洲的开发者更喜欢使用 python.org,比例是总体开发者的两倍(27% 对 13%),而位于欧洲的开发者选择操作系统提供的 Python 的比例高出总体开发者 22 个百分点(55% 对 33%)。

您使用以下哪种(哪些)工具隔离 Python 环境?> 100%

55%

44%

venv

43%

55%

Virtualenv

42%

40%

Docker

21%

23%

Pipenv

19%

13%

Poetry

Poetry 的份额从 2021 年的 13% 上升到 2022 年底的 19%,增长了 6 个百分点。

您使用哪些代码格式化程序?> 100%

51%

35%

Black

28%

18%

isort

23%

30%

autopep8

19%

0%

pre-commit

1%

2%

YAPF

与去年的调查结果相比,Black 代码格式化程序的份额显著增加(增加了 16 个百分点)。

您使用哪些 linter?> 100%

43%

40%

Flake8

41%

26%

Black

33%

37%

pylint

18%

14%

mypy

3%

4%

其他

您最依赖哪 5 个 Python 软件包?> 100%

55%

Psycopg2

51%

Requests

40%

Gunicorn

36%

Celery

35%

Pillow

32%

pytest

31%

Black

19%

Boto3

14%

uWSGI

14%

sentry-sdk

14%

WhiteNoise

12%

factory-boy

11%

Coverage

11%

Jinja2

5%

HTTPX

2%

Bleach

2%

Model Bakery

2%

Python Slugify

2%

sorl-thumbnail

6%

其他

5%

Psycopg2 和 Requests 是 Django 用户中使用最多的 Python 软件包,各占 54%。

Requests 是所有 Python 开发者中的流行平台,而 Psycopg2 似乎特定于 Django。

Pillow 是一个处理图像的模块,很受经验不足的开发者的欢迎。

您使用什么云托管平台?> 100%

44%

AWS

23%

DigitalOcean

21%

Heroku

12%

Google Cloud Platform

10%

PythonAnywhere

8%

Microsoft Azure

7%

Linode

3%

Fly.io

1%

OpenShift

1%

OpenStack

13%

其他

20%

AWS 拥有 56% 的份额,通常是北美和中美洲开发者的选择。

Heroku 在非洲以 39% 的份额领先,AWS 以 37% 紧随其后。

此外,PythonAnywhere 在非洲和中东的需求更高,占有 20% 的份额,在亚洲则有 19%。在世界其他地方,其比例不到 10%。

您如何为云进行本地开发?> 100%

63%

使用 virtualenv

44%

在 Docker 容器中

8%

在虚拟机中

7%

使用本地系统解释器

7%

在远程开发环境中

2%

直接在生产环境中

2%

其他

10%

您如何在云端(生产环境中)运行代码?>100

54%

在容器内

33%

在虚拟机中

23%

在平台即服务上

9%

无服务器

2%

其他

15%

开发工具

您的主要文本编辑器或 IDE 是什么?> 100%

42%

VS Code

38%

PyCharm

7%

Vim

5%

Sublime Text

2%

Atom

2%

Emacs

1%

Notepad++

3%

其他

您的主要本地操作系统是什么?> 100%

41%

Linux

33%

macOS

16%

带 WSL 的 Windows

10%

不带 WSL 的 Windows

1%

其他

您使用哪种(哪些)持续集成 (CI) 系统?> 100%

42%

35%

GitHub Actions

28%

27%

GitLab CI

10%

12%

Jenkins/Hudson

8%

8%

CircleCI

2%

6%

TravisCI

自去年以来,GitHub Actions 的份额小幅上升了 7 个百分点,而 Jenkins 和 Travis CI 分别下降了 2 个和 4 个百分点。

您使用什么配置管理工具?> 100%

19%

Ansible

8%

自定义解决方案

6%

Fabric

2%

Puppet

2%

Salt

1%

Chef

5%

其他

65%

容器

您使用 Docker 容器或类似的工具吗?>100

47%

我在开发过程中使用容器

45%

我构建的应用程序在生产环境的容器中运行

44%

在 CI/CD 流程中使用容器

31%

不/我不确定

2%

我将容器用于其他目的

您在 Docker 容器中运行哪些内容?>100

91%

我开发或我的团队开发的应用程序代码

61%

我的代码连接到的支持服务

22%

我在开发过程中使用的实用工具

2%

其他

对于个人和 10 人以下的小公司,为支持服务和实用工具使用 Docker 容器的比例较低。

在开发过程中,您在哪里运行代码?>100

71%

在 virtualenv 内

61%

在容器内,在我的计算机上

15%

在我的计算机上使用系统解释器

9%

在容器内,在另一台计算机上

4%

在容器外的另一台计算机上

0%

其他

在开发过程中您如何将代码部署到远程容器?>100

68%

我使用持续集成

40%

我将代码转移到主机并在那里构建容器

35%

我在本地构建容器镜像,然后推送镜像

12%

我远程连接到 Docker 引擎

6%

其他

您如何调试您的应用程序?> 100%

72%

使用 print 或者 log 语句

56%

使用我的 IDE

40%

使用 shell / pdb

2%

其他

45% 拥有至少 11 年经验的开发者使用 shell / pdb 调试应用程序,而只有 20% 拥有不到 1 年经验的开发者和 30% 具有 1-2 年经验的开发者这样做。

您是在远程主机上还是在容器中调试您的应用程序?

统计数据

您目前的就业状况如何?>100

65%

公司/组织全职员工

11%

自由职业者

9%

个体户

6%

学生

4%

公司/组织兼职员工

3%

在职学生

1%

退休

1%

其他

Django 用户自由职业者的比例一般是开发者的两倍:本次调查中自由职业者的比例为 11%,而在整个开发者生态系统中这一比例仅为 5%,在 Python 开发者调查中则为 6%。

您的工作职责是什么?>100

79%

开发者/程序员

18%

团队负责人

17%

架构师

12%

首席技术官/首席信息官/首席执行官

7%

产品经理

6%

技术支持

4%

DBA

4%

业务分析师

3%

QA 工程师

3%

技术撰稿人

8%

其他

您有多长时间的专业编码经验?> 100%

9%

11%

不足 1 年

15%

17%

1–2 年

22%

24%

3–5 年

21%

19%

6–10 年

33%

29%

11 年以上

今年的受众特征显示,2022 年受访者的经验略高于去年。

您使用 Python 编程有多长时间了?> 100%

6%

8%

不足 1 年

16%

21%

1–2 年

30%

31%

3–5 年

28%

24%

6–10 年

19%

16%

11 年以上

您处于什么年龄段?

2%

未满 18 岁

4%

18-20 岁

30%

21-29 岁

37%

30-39 岁

19%

40-49 岁

6%

50-59 岁

2%

60 岁或以上

1%

不便回答

您位于哪个地区?

45%

欧洲

19%

北美洲

18%

亚洲

7%

南美洲

7%

非洲

3%

中东

2%

大洋洲

1%

中美洲

1%

其他

您在哪个国家/地区?

15%

美国

7%

印度

6%

德国

5%

法国

5%

英国

3%

西班牙

3%

俄罗斯联邦

3%

巴西

3%

波兰

3%

中国大陆

2%

加拿大

2%

荷兰

2%

意大利

2%

澳大利亚

2%

伊朗

1%

尼日利亚

公司

贵公司的规模有多大?

18%

只有我

20%

2–10 人

20%

11–50 人

20%

51–500 人

5%

501–1,000 人

5%

1,001–5,000 人

8%

超过 5,000 人

3%

不确定

在贵公司内,您所在的团队规模有多大?

9%

只有我

67%

2–7 人

14%

8–12 人

6%

13–20 人

2%

21–40 人

1%

超过 40 人

Django 开发者倾向于在小团队中工作。

您参与多少个项目?

开发者越有经验,拥有的项目往往就越多。经验较少的开发者通常参与一个主项目和几个副项目,甚至可能只参与一个主项目。

您是在团队中工作还是独立工作?

以下哪个行业最能描述贵公司的业务?> 100%

38%

信息技术/软件开发

8%

教育/培训

7%

会计/金融/保险

5%

医疗/卫生

3%

销售/分销/业务开发

3%

科学

3%

非营利

3%

银行业/房地产/抵押融资

3%

制造业

2%

行政/管理

2%

物流/运输

2%

市场营销

2%

商业/战略管理

2%

服务/维护

1%

出版

1%

安全

1%

人力资源

1%

餐饮业/酒店业

1%

建设/建筑

1%

设计

1%

法律

1%

客户支持

10%

其他

方法和原始数据

想进一步挖掘数据吗?下载匿名调查回复,看看您能学到什么!在 Twitter 上使用话题标签 #djangosurvey 提及 @jetbrains@djangoproject,分享您的发现和见解。

在剖析数据之前,请注意以下重要信息:

数据集仅包含来自官方 Django Software Foundation 渠道的回复。滤除重复和不可信的回复后,数据集包括 2022 年 9 月至 10 月通过 djangoproject.comDSF 的 Twitter 账号等官方 Django 渠道上的调查推广收集的约 4900 份回复。为了防止调查偏向于任何特定的工具或技术,未使用任何与产品、服务或供应商相关的渠道收集回复。

数据均已匿名处理,不含个人信息或详细地理位置信息。此外,为了防止经逐字评论识别任何个别受访者身份,已删除所有开放式字段。

为了帮助您更好地理解调查的逻辑,我们将共享数据集、调查问题以及所有调查逻辑。

下载原始数据

我们再次代表 Django Software Foundation 和 JetBrains 感谢参与本次调查的所有人。

如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com 与我们联系。