JetBrains logo

2023 Django 开发者调查

本报告基于由 Django Software Foundation 和 PyCharm 于 2023 年 9 月至 10 月联合开展的第三次年度 Django 开发者调查。来自世界各地的约 4,000 名 Django 用户和爱好者参与了调查,帮助我们更好地了解框架及其生态系统的现状。

查看 Django 开发者调查结果:20222021

Django 使用

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

64%

既用于工作,也用于我的个人、教育或副业项目

19%

仅用于我的个人、教育或副业项目

18%

仅用于工作

您使用什么版本的 Django?100+

2021 年2022 年2023 年
69%4.2
55%25%4.1
34%16%4.0
75%47%28%3.2
30%10%5%3.1
39%13%8%3.0 或更低版本
3%3%4%我不确定
075%

在 2023 年 9 月至 10 月调查期间,4.2、4.1 和 3.2 是 Django 积极支持的唯一版本。4.0、3.1 和 3.0 及以下版本不再具有安全支持。

您在新项目中使用哪个 Django 版本?

64%

最新的稳定版本

32%

最新的 LTS 版本

4%

其他

如何创建新的 Django 项目?100+

71%

从头开始

17%

使用 Cookiecutter Django

13%

使用定制工具

7%

使用 djangox

7%

使用 Django Material Kit

7%

使用 django-react-boilerplate

10%

其他

Jeff Triplett
REVSYS 合伙人、Python Software Foundation 前总监兼副主席

我怀疑大多数人都默认使用“pip install django”,这说明了 Django 的版本稳定性。

MastodonX(以前称为 Twitter)

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

40%

每个稳定版本

32%

仅 LTS

15%

每个月度修正版本

5%

我使用不受支持的 Django 版本

8%

其他

技术和框架

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

76%

PostgreSQL

43%

SQLite

30%

MySQL

10%

MariaDB

8%

MongoDB

6%

Oracle

4%

Microsoft SQL Server

4%

其他

1%

无/我不确定

您使用什么缓存后端?100+

54%

Redis

20%

Memcached

18%

本地内存

16%

数据库

8%

文件系统

3%

其他

24%

您使用什么 GeoDjango 后端?100+

66%

无/我不确定

24%

PostGIS

10%

MySQL

4%

Oracle

4%

SpatiaLite

2%

其他

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

77%

admin

74%

auth

47%

postgres

46%

sessions

45%

staticfiles

32%

messages

25%

contenttypes

25%

redirects

17%

humanize

16%

sites

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

69%

模型

48%

管理员

33%

身份验证

29%

迁移

24%

视图

14%

Django 管理命令

14%

表单

13%

模板

9%

第三方生态系统

8%

URL

您使用什么模板引擎?100+

78

Django 模板

16

Jinja2

3

其他

13

您的项目中使用哪种(哪些)类型的测试?100+

51%

功能测试

28%

回归测试

18%

QA 测试

17%

性能测试

16%

安全测试

14%

生产测试

13%

实用性测试

13%

验收测试

11%

烟雾测试

10%

负载测试

您使用什么测试框架?100+

42%

41%

pytest

33%

31%

pytest-django

31%

36%

unittest (manage.py test)

24%

21%

coverage

15%

10%

Selenium

自去年以来,Selenium 和 Playwright 的受欢迎程度分别从 10% 和 3% 增长到 15% 和 9%。Playwright 还有一个优秀的 pytest 插件,可以在 Docker 容器中运行。

您使用哪些异步技术?100+

28%

25%

ASGI

25%

23%

asyncio

21%

18%

FastAPI

19%

15%

Uvicorn

18%

15%

Channels

虽然 Django 对 ASGI 下异步视图的编写和部署有良好的内置支持,但 FastAPI 在 Django 开发者中仍然更受欢迎。随着 Django 的异步支持在后续版本中不断成熟,这种情况可能会发生变化。

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

2021 年2022 年2023 年
68%62%56%Bootstrap
15%22%29%Tailwind CSS
14%13%18%纯 CSS
12%9%11%Material Design/Lite
6%6%8%Bulma
3%2%4%Semantic UI
2%1%5%Foundation
2%2%3%UI Kit
1%1%3%Skeleton
0%0%2%Susy
4%5%5%其他
16%17%15%
0%68%

Bootstrap 连续三年呈下降趋势,而 Tailwind CSS 则显著增长,受欢迎程度在过去两年翻了一番。如果您想开始在 Django 中使用 Tailwind CSS,可以阅读软件包创建者 Tim Kamanin 的这篇文章

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

2021 年2022 年2023 年
37%36%35%React
37%32%31%jQuery
5%16%23%htmx
28%25%19%Vue
10%8%10%Angular
3%6%10%Alpine.js
1%1%4%Backbone
3%4%Svelte
1%1%3%Ember
0%0%3%Mako
3%4%4%其他
20%19%18%
0%37%
Sarah Boyce
Django Fellow

将 Django 作为 API 和 JavaScript 框架创建单页应用程序已经成为现代 Web 用户体验的标准,但 htmx 似乎正在向这一标准发起挑战。

MastodonLinkedIn

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

49%

60%

djangorestframework

27%

28%

django-debug-toolbar

27%

28%

django-celery

18%

17%

django-allauth

18%

18%

django-cors-headers

您使用 Django 做什么?100+

73%

全栈

61%

使用 DRF 的 REST API

4%

其他

Sarah Boyce
Django Fellow

django-ninja 是 Django 的异步类型化 API 框架,也可能是自去年调查以来受欢迎程度上涨最大的框架。抢占 djangorestframework 的部分市场份额。我认识的许多人相当喜欢 django-ninja。

MastodonLinkedIn

开发工具

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

47%

VS Code

29%

PyCharm

7%

Vim

3%

Sublime Text

3%

Emacs

2%

Notepad++

2%

Nano

2%

Atom

4%

其他

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

36%

Linux

32%

macOS

19%

带 WSL 的 Windows

10%

不带 WSL 的 Windows

2%

BSD

2%

其他

Flavio Adamo
codeishot.com 骄傲的联合创造者

我是 Django 开发者,PyCharm 是我最好的投资之一。起初我还有些疑虑,但真正体验过之后,我就再也回不到过去了。

X (Twitter)

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

2021 年2022 年2023 年
35%42%45%GitHub Actions
27%28%25%GitLab CI
12%10%11%Jenkins/Hudson
8%8%5%CircleCI
5%AWS CodePipeline
5%Azure Pipelines
6%2%4%Travis CI
4%Google Cloud Build
3%Buildkite
1%1%2%TeamCity
7%6%4%其他
32%28%25%
045%

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

20%

Ansible

10%

自定义解决方案

6%

Fabric

4%

Puppet

4%

Chef

3%

Salt

3%

其他

62%

Vuyisile Ndlovu
DevOps 工程师

GitHub Actions 近年来稳步获得市场份额,并与 GitHub 环境集成。GitHub 是最流行的源代码管理工具之一,与 GitHub Actions 的集成使开发者可以直接在 GitHub 环境中设置和管理其 CI/CD 工作流。

LinkedInX(以前称为 Twitter)

您使用哪种(哪些)基础架构即代码 (IaC) 工具?100+

20%

Terraform

9%

AWS CloudFormation

5%

Pulumi

4%

Crossplane

4%

Google Cloud Deployment Manager

4%

Azure Resource Manager

4%

Vagrant

4%

Puppet

3%

Saltstack

3%

Brainboard Ansible

Joseph Anyetei Sowah
DevOps 工程师

我知道 Terraform 是市场的主宰,但 Pulumi 和开源 IaC 工具也表现不错。Pulumi 的美妙之处在于,您可以使用自己最喜欢的编程语言(我的是 Python)来构建基础架构。

LinkedInX(以前称为 Twitter)

语法和文档

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

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

34%

Mypy

29%

Pyright / Pylance

7%

Pytype

4%

Pyre

6%

其他

33%

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

28%

一些,或者有时

26%

一点,或者几乎从不

23%

许多,或者经常

23%

无,或者从来没有

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

40%

readme

27%

自托管

23%

GitHub Pages

20%

阅读文档

11%

Atlassian Confluence

7%

MkDocs

4%

GitBook

8%

其他

17%

我们不发布文档

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

67%

没有明确采用信息架构

28%

正式文档审查

18%

基于主题的结构

17%

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

13%

明确的贡献者风格指南

12%

包容性语言

9%

Diátaxis

7%

DITA

4%

其他信息架构

5%

其他

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

57%

Markdown

37%

Swagger/OpenAPI

23%

Sphinx

17%

rST

16%

Postman

16%

wiki

4%

AsciiDoc

4%

其他

16%

语言和框架

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

83%

13%

不,我使用 Python 作为次要语言

3%

其他

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

68%

JavaScript

65%

HTML / CSS

47%

SQL

39%

Bash/Shell

28%

TypeScript

20%

C/C++

14%

PHP

14%

Java

14%

Go

10%

Rust

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

此问题仅向主要语言不是 Python 的受访者显示。

12%

JavaScript

10%

TypeScript

10%

Java

8%

C/C++

8%

PHP

6%

Go

6%

C#

5%

SQL

5%

Rust

4%

Ruby

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

31%

React.js

27%

Flask

25%

FastAPI

22%

JQuery

21%

Vue.js

9%

Express

9%

Angular

6%

Laravel

6%

ASP.NET Core

6%

Spring

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

74%

Django

4%

React.js

2%

Vue.js

2%

FastAPI

2%

Flask

1%

ASP.NET

1%

ASP.NET Core

1%

Angular

1%

Spring

1%

Angular.js

Thibaud Colas
Django Software Foundation 总监

很高兴我们的社区中有这么多其他框架的用户。我们可以从 Rails 和 Laravel 等竞争对手那里学到很多东西。

LinkedInX(以前称为 Twitter)

资源

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

54%

59%

djangoproject.com

24%

26%

Stack Overflow

21%

18%

YouTube

18%

20%

Reddit (r/django)

17%

10%

Django 论坛

17%

15%

Django News 简报

17%

16%

我不关注 Django 开发

14%

20%

X (Twitter)

12%

11%

朋友

12%

11%

Hacker News

2023 年,Django 开始积极管理 Mastodon 上的页面。Mastodon 的最大用户比例在北美。同时,X(以前称为 Twitter)用户比例略有下降。

去年以来,Django 论坛的占比从 10% 增加到 17%,Django Discord 的受欢迎程度也有所增加。djangoproject.com 鼓励用户前往这两个渠道寻找社区和支持。

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

71%

80%

djangoproject.com

41%

StackOverflow

38%

40%

YouTube

37%

45%

博客

26% 的开发者已经在使用新兴 AI 工具学习 Django。

除了官方 Django 频道,您还阅读或关注以下哪些 Django 网络资源?100+

54%

YouTube 频道

35%

播客

34%

博客

13%

论坛

12%

X(以前称为 Twitter)账号

21%

其他

Joseph Anyetei Sowah
DevOps 工程师

YouTube 是我学习 Django 的最佳来源。有时我会搜索并重新观看 Django 会议演讲和教程。

LinkedInX(以前称为 Twitter)

Python 版本

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

65%

3.11

46%

58%

3.10

29%

51%

3.9

20%

36%

3.8

8%

17%

3.7

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

38%

Python.org

34%

操作系统提供的 Python

31%

Docker 容器

27%

pyenv

8%

Anaconda

8%

从源代码构建

6%

通过云提供商自动更新

4%

其他人为我管理 Python 更新

5%

其他

4%

我不更新

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

2021 年2022 年2023 年
44%55%52%venv
40%42%40%Docker
55%43%34%Virtualenv
13%19%21%Poetry
23%21%19%Pipenv
8%7%10%Conda
3%2%3%Vagrant/虚拟机
2%3%3%其他
3%3%5%
2%55%

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

52%

Black

29%

isort

26%

autopep8

18%

pre-commit

3%

YAPF

7%

其他

24%

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

45%

55%

Psycopg2

44%

51%

Requests

34%

40%

Gunicorn

32%

36%

Celery

30%

32%

pytest

Django 4.2 中添加了对 psycopg 3.1.8+ 的支持,对 psycopg2 的支持可能会在将来被弃用和移除。

您使用哪些 linter?100+

2021 年2022 年2023 年
26%41%42%Black
40%43%37%Flake8
37%33%29%pylint
14%18%20%mypy
4%3%11%其他
26%23%21%
3%43%
Thibaud Colas
Django Software Foundation 总监

Ruff (https://docs.astral.sh/ruff/) 应该解释了很多动作,以及其速度和易用性。

LinkedInX(以前称为 Twitter)

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

2021 年2022 年2023 年
43%44%39%AWS
25%23%23%DigitalOcean
13%12%17%Google Cloud Platform
27%21%16%Heroku
11%10%13%PythonAnywhere
8%8%11%Microsoft Azure
6%7%9%Linode
1%1%5%OpenStack
3%5%Fly.io
1%1%4%OpenShift
0%0%4%Rackspace
11%13%17%其他
19%20%16%
0%44%

在 Heroku 取消免费产品方案后,它的用户占比从 2021 年的 27% 下降到 2023 年的 16%。

您如何在云中运行代码?100+

51%

在容器内

36%

在虚拟机中

21%

在平台即服务上

10%

无服务器

3%

其他

15%

Joseph Anyetei Sowah
DevOps 工程师

在 Django 部署方面,AWS 是我的最爱。只需几个步骤,我就可以把 Django 应用轻松部署到 Elastic Beanstalk。

LinkedInX(以前称为 Twitter)

您在生产中使用什么容器编排服务?100+

19%

Amazon ECS / Fargate

14%

Kubernetes

12%

Amazon EKS

12%

Docker Swarm

10%

Google Kubernetes Engine

8%

Google Cloud Run

7%

Azure Kubernetes Service

5%

OpenShift

4%

HashiCorp Nomad

5%

其他

48%

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

55%

使用 virtualenv

44%

在 Docker 容器中

13%

在虚拟机中

9%

使用本地系统解释器

9%

在远程开发环境中

4%

直接在生产环境中

2%

其他

11%

容器

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

49%

我在开发过程中使用容器

43%

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

42%

在 CI/CD 流程中使用容器

28%

不/我不确定

3%

我将容器用于其他目的

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

83%

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

64%

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

23%

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

4%

其他

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

68%

在 virtualenv 内

59%

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

20%

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

10%

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

9%

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

4%

其他

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

52%

我使用持续集成

39%

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

38%

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

33%

我远程连接到 Docker 引擎

2%

其他

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

67%

使用 print 或者 log 语句

52%

使用我的 IDE

42%

使用 shell / pdb

2%

其他

Vuyisile Ndlovu
DevOps 工程师

print 语句很方便,不需要设置,并且让您可以快速查看变量的值,但除此之外没有更多优势了。我同时使用 print 语句和 IDE 调试器。与 print 语句相比,调试器有多个优势。调试器允许在不更改源代码的情况下设置断点、监视您感兴趣的变量、隔离代码的特定部分,甚至设置条件断点。使用调试器,您几乎可以在任何位置暂停代码执行,甚至包括请求-响应周期期间,这对于调试 Web 应用非常实用。

LinkedInX(以前称为 Twitter)

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

27%

我只使用 log 语句

26%

我经常在远程运行或在容器中运行的应用程序上使用调试器

22%

我已经附加过一到两次调试器

25%

不支持

Vuyisile Ndlovu
DevOps 工程师

调试容器化应用的挑战性在于,使其正常工作需要大量的工具开销。也正因为这一点,许多开发者不进行调试。

LinkedInX(以前称为 Twitter)

统计数据

您目前的就业状况如何?

64%

公司/组织全职员工

10%

个体户

8%

自由职业者

6%

学生

4%

公司/组织兼职员工

3%

目前失业

3%

在职学生

2%

其他

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

78%

开发者/程序员/软件工程师

16%

团队负责人

15%

架构师

14%

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

10%

数据分析师/数据工程师/数据科学家

7%

技术支持

7%

产品经理

6%

业务分析师

6%

DBA

5%

QA 工程师

4%

技术撰稿人

4%

讲师/教师/导师

6%

其他

您专注于什么类型的活动?100+

86%

Web 开发

29%

DevOps/系统管理/编写自动化脚本

25%

数据分析

16%

软件测试/编写自动化测试

15%

机器学习

15%

系统管理

14%

软件原型设计

13%

Web 解析器/采集器/抓取工具编程

12%

移动开发

10%

教育

10%

桌面开发

8%

网络编程

7%

嵌入式开发

6%

计算机图形

6%

游戏开发

5%

多媒体应用程序开发

3%

其他

贵公司的规模有多大?

8%

只有我

18%

2–10 人

26%

11–50 人

24%

51–500 人

6%

501–1,000 人

7%

1,001–5,000 人

9%

超过 5,000 人

2%

不确定

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

8%

只有我

55%

2–7 人

20%

8–12 人

9%

13–20 人

5%

21–40 人

3%

超过 40 人

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

62

我在团队中工作

33

我独立从事自己的项目

5

我担任外部顾问或培训师

您参与多少个项目?

47

我参与许多不同的项目

39

我参与一个主项目和几个副项目

14

我只参与一个项目

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

32%

信息技术/软件开发

7%

会计/金融/保险

6%

制造业

6%

教育/培训

5%

医疗/卫生

4%

销售/分销/业务开发

3%

市场营销

3%

科学

3%

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

3%

非营利

您有多少年的完整专业编码经验?

9%

不足 1 年

16%

1–2 年

24%

3–5 年

19%

6–10 年

32%

11 年以上

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

6%

不足 1 年

17%

1–2 年

33%

3–5 年

24%

6–10 年

21%

11 年以上

能否告诉我们您的年龄段?

4%

18-20 岁

30%

21-29 岁

38%

30-39 岁

18%

40-49 岁

6%

50-59 岁

2%

60 岁或以上

1%

不便回答

您位于哪个地区?

44%

欧洲

19%

北美洲

17%

亚洲

7%

南美洲

6%

非洲

3%

中东

3%

大洋洲

2%

中美洲

1%

加勒比地区

1%

其他

Django 社区正在不断发展,触及全球更多区域。

去年,DjangoCon Africa 首次举办。

Joseph Anyetei Sowah
DevOps 工程师

很高兴看到非洲的数字,但基于该地区正在开展的工作,我相信这一百分比明年可能会再翻一番。

LinkedInX(以前称为 Twitter)

您在哪个国家/地区?

24%

美国

7%

印度

5%

德国

5%

英国

4%

法国

3%

巴西

2%

加拿大

2%

波兰

2%

俄罗斯联邦

2%

意大利

方法和原始数据

想进一步挖掘数据吗?下载匿名调查回复,看看您能了解到什么!在 X(以前称为 Twitter)上使用话题标签 #djangosurvey 提及 @pycharm@djangoproject,或在 Mastodon 上提及 @django,分享您的发现和洞见。

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

数据集仅包含来自官方 Django Software Foundation 渠道的回复。这些回复收集自官方 Django 渠道上的调查推广,例如 djangoproject.comDSF 的 X(以前称为 Twitter)账号,没有任何 PyCharm 渠道的参与。为了防止调查偏向于任何特定的工具或技术,未使用任何与产品、服务或供应商相关的渠道收集回复。

滤除重复和不可信的回复后,数据集包含 2023 年 9 月至 10 月收集的约 4,000 份回复。以下是回复滤除标准:

满足以下任何一项:

  • 未满 18 岁。
  • 没有回答调查第三页上的“您有多少年的完整专业编码经验?”这个问题。
  • 年龄在 21 岁以下,并拥有 11 年以上的专业编码经验。
  • 多项选择题的单选回答太多(不包括回答“无”)。
  • 来自相同电子邮件地址的多个回复(仅使用一个回复)。

至少满足以下两项:

  • 使用超过 10 种编程语言。
  • 超过 8 种工作角色。
  • 担任首席执行官而未满 21 岁。
  • 总体选择的答案太多。
  • 回答太快(每个问题不到 5 秒)。

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

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

下载原始数据

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

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