Django入门教程:搭建你的第一个Python网站
上周五晚上,我正躺在成都家里沙发上刷着《三体》,突然钉钉“叮”了一声——产品经理发来消息:“兄弟,能不能帮我们搭个内部工具?就一个简单的表单提交页面,后端用 Python 吧,听说你们前端组最近都在学 Django?”
我差点一口茶喷出来。谁说前端要学 Django 的?明明是我们组有个新人想搞全栈,偷偷在周会上提了一嘴。结果这锅就莫名其妙扣我头上了。
但转念一想,反正双11刚过,系统稳如老狗,代码 review 也差不多了,不如趁这机会重温一下 Django。毕竟在阿里干了快五年,天天和 React、Webpack 打交道,偶尔写点后端代码还能防止老年痴呆(不是)。
而且说实话,虽然我是前端 P7,但对后端也不是完全小白——分布式系统那套理论我啃过不少,只是实操少。这次正好练练手,顺便给想入门 Python Web 开发的同学写篇接地气的教程。
为什么选 Django?
先说清楚,我不是 Python 原教旨主义者。在阿里,Java 是亲儿子,Go 是干儿子,Python 更像是“临时工”——但架不住它快啊!
Django 这框架,真·开箱即用。自带 admin 后台、ORM、用户认证、路由系统,连 CSRF 防护都给你配好了。你只要写几行代码,一个能跑的网站就出来了。对于我这种只想快速验证想法、不想从零造轮子的人来说,简直是救命稻草。
更重要的是——资源丰富。Django 社区太成熟了,Stack Overflow 上一搜一大把,GitHub 上各种轮子随便抄。不像某些新兴框架,文档写得跟天书一样,出了问题只能看源码硬啃(说的就是你,某 Rust 框架)。
环境准备:别被虚拟环境劝退
我习惯用 VSCode 写代码,装了一堆插件:Python、Pylance、Django Snippets、Bracket Pair Colorizer……连字体都调成了 Fira Code,仪式感拉满。
先确保你装了 Python 3.8+(推荐 3.10 或 3.11),然后创建一个干净的虚拟环境:
python -m venv mysite_env
source mysite_env/bin/activate # Linux / macOS
# Windows 用户用:mysite_env\Scripts\activate
激活后,装 Django:
pip install django
别直接 pip install 到全局!否则哪天你的项目依赖冲突了,运维同事看你的眼神会像看线上事故责任人——去年双11我就因为本地环境混乱,误删了测试库,被请去“喝茶”半小时。
第一行代码:Hello World 不是梦
Django 有个神奇命令:startproject。它会帮你生成整个项目骨架。
django-admin startproject mysite
cd mysite
python manage.py runserver
浏览器打开 http://127.0.0.1:8000,看到那个火箭图标没?恭喜你,已经跑起来一个 Web 服务了!比我在阿里第一次部署应用还顺利(那次因为没配好 Nginx,直接 502 到凌晨三点)。
但光有首页不够,我们得加自己的页面。Django 推荐用 App 来组织功能模块。比如你要做个区块链资产登记系统(别笑,我们真接过这种需求),可以建个 blockchain_app:
python manage.py startapp blockchain_app
然后在 mysite/settings.py 里注册它:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认 app
'blockchain_app', # ← 加这一行
]
路由 + 视图:让 URL 有灵魂
现在我们要让 /hello 返回 “Hello, Django!”。
先在 blockchain_app/views.py 里写个函数:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django! 成都的节奏真舒服~")
再在 blockchain_app 目录下新建 urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello, name='hello'),
]
最后,在主项目的 mysite/urls.py 里 include 进来:
from django.contrib import admin
from django.urls \
import path, include # 注意这里
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blockchain_app.urls')), # ← 加这一行
]
重启服务,访问 http://127.0.0.1:8000/hello,搞定!
💡 小贴士:Django 的路由设计很清晰,支持嵌套路由。在阿里做微前端时,我们甚至用 Django 作为 BFF 层聚合多个后端接口,靠的就是这种灵活的路由机制。
数据库:别再手写 SQL 了
接下来加点真实数据。假设我们要记录“区块链项目信息”,字段包括名称、简介、是否已上线。
Django 的 ORM 真香!不用写一行 SQL,模型定义如下(blockchain_app/models.py):
from django.db import models
class BlockchainProject(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
is_live = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
然后生成并执行迁移:
python manage.py makemigrations
python manage.py migrate
Django 默认用 SQLite,适合开发。但生产环境千万别用!我们在阿里一律上 RDS(MySQL 或 PostgreSQL)。记得改 settings.py 里的 DATABASES 配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': '******',
'HOST': 'your-rds-endpoint',
'PORT': '5432',
}
}
Admin 后台:老板看了都说好
最让我震惊的是 Django 自带的 admin 后台。只需两步,就能 CRUD 你的数据:
- 注册模型到 admin(
blockchain_app/admin.py):
from django.contrib import admin
from .models import BlockchainProject
admin.site.register(BlockchainProject)
- 创建超级用户:
python manage.py createsuperuser
输入用户名密码后,访问 /admin,登录进去——哇塞!一个完整的管理界面自动生成了,连搜索、过滤、分页都有。
我们组产品经理上次看到这个,眼睛都亮了:“这不比我们花两周做的低代码平台香?” 我默默点头,心里想:要不是合规要求,我都想直接拿这个当正式后台用了。
关于“区块链”的彩蛋
你可能注意到了,我故意用了“区块链项目”当例子。其实没啥深意——就是上周有个实习生问我:“哥,Django 能不能接区块链 API?”
我说当然能!Django 本质是个 Web 框架,你完全可以:
- 用
requests调外部链上接口 - 用 Celery 异步处理交易监听
- 把钱包地址、交易哈希存进数据库
不过提醒一句:别为了用区块链而用区块链。我们之前有个项目,非要把用户积分上链,结果 TPS 崩了,运维差点报警。后来改成只存关键审计日志,性能立马起飞。
技术选型要看场景,Django 擅长的是快速构建可靠 Web 应用,而不是直接操作底层链。把它当胶水层,反而更安全。
生产部署:别在本地 runserver 了!
新手最容易犯的错,就是把 python manage.py runserver 当成生产服务器。醒醒!那是开发用的,性能差、不安全、扛不住并发。
在阿里,我们一般这么部署:
- 用 Gunicorn 或 uWSGI 做应用服务器
- 前面挂 Nginx 做反向代理和静态文件服务
- 静态资源扔 CDN(比如阿里云 OSS + CDN)
- 数据库连接池配置好
- 关掉 DEBUG 模式!
一个简单的 Gunicorn 启动命令:
gunicorn --workers 4 --bind 0.0.0.0:8000 mysite.wsgi:application
配合 systemd 或 Docker,就能稳稳跑在生产环境。
另外,资源监控不能少。我们用 ARMS(阿里云应用实时监控)看 QPS、错误率、慢查询。有一次发现某个接口响应 2s+,查了半天,原来是忘了加数据库索引——这种坑,早踩早超生。
总结:Django 适合谁?
| 人群 | 是否推荐 | 理由 |
|---|---|---|
| 纯新手 | ✅ 强烈推荐 | 文档全、社区大、出错容易查 |
| 前端想全栈 | ✅ | 快速验证想法,不用深陷 DevOps |
| 高并发系统 | ⚠️ 谨慎 | 需配合缓存、异步任务、分库分表 |
| 区块链原生应用 | ❌ | 不适合做节点或共识层,但可做展示层 |
写完这个小 demo,我突然理解为什么很多创业公司 MVP 都用 Django —— 快、稳、省心。虽然在阿里我们主力是 Java + Spring Cloud,但内部工具、数据看板、自动化脚本,Django 出镜率极高。
所以,如果你也想:
- 快速搭个个人博客
- 给团队做个内部管理系统
- 验证一个产品 idea
- 或者只是想跳槽前多学一门技能
Django 绝对值得你花一个周末试试。
最后送大家一句话:代码写得快不算本事,写得稳才是 P7 的修养。就像我在双11前夜反复检查配置那样——稳住,我们能赢。
Happy coding!

评论 0