Django入门教程:搭建你的第一个Python网站——一个广州老城区奶爸的深夜技术复盘
上周五晚上11点47分,老婆在微信上发来一句:“两个崽终于睡了,你可以开工了。”
我揉了揉酸痛的腰,把白天被娃打翻在键盘上的半包旺仔牛奶糖收拾干净,泡了杯速溶咖啡(别笑,真没时间手冲),打开那台服役三年、风扇声比娃哭还响的ThinkPad。屏幕亮起,终端里一行熟悉的提示符闪烁着:djangoadmin startproject mysite。
这是我在“哄睡后学习计划”坚持的第89天。而今天,我要把Django的第一个项目跑起来——不是为了刷LeetCode,也不是为了接外包,而是想搞清楚:为什么隔壁做Java的同事能靠Python爬虫副业月入5k,而我还在用Spring Boot写CRUD?
一、从Java到Python:一个老广程序员的中年技术焦虑
我是阿强,35岁,土生土长的老西关人,坐标荔湾老城区一栋90年代楼梯楼,房租3500(是的,在广州还能找到这个价,多亏了老破小)。主业是Java后端开发,做了快十年,Spring全家桶闭着眼都能搭。月薪从15k涨到22k,听起来不错,但上有老下有小,老婆刚辞职带娃,压力像珠江水位——只涨不退。
去年十月,公司裁员风声四起。HR找我谈话时说:“阿强啊,你技术稳,但太‘专’了,现在复合型人才吃香。”
我表面点头称是,心里却嘀咕:“专?我连前端Vue都啃过,这还不算复合?”
直到某天在GitHub上刷到一个叫“job-spider”的项目——用Python写了个智联招聘爬虫,每天自动抓取远程岗位,还能邮件通知。作者简介写着:“Java转Python三个月,副业收入超主业。”
那一刻,我真的慌了。
不是怕失业,是怕技术停滞。Java固然稳如老狗,但生态重、启动慢、部署烦,尤其对个人项目来说,简直像开着拖拉机送外卖——能到,但效率低得让人想哭。反观Python,几行代码就能干大事,Django更是号称“十分钟建站”,社区活跃,教程满天飞。
可问题来了:我连Python环境都没装过。
二、深夜实验室:Django初体验,从“Hello World”开始
第一次尝试Django是在去年12月的一个雨夜。娃发烧到39度,折腾到凌晨两点才睡。我本该抓紧补觉,但脑子里全是那个爬虫项目的README:
pip install djangodjango-admin startproject first_sitepython manage.py runserver
就这么三行,真的能跑个网站出来?
我打开终端(其实是WSL2,毕竟Windows原生Python环境坑太多),照着敲。结果pip install卡在99%,网络超时。气得我差点砸键盘——后来才知道,要换清华源:
pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple/
装完Django 4.2,执行startproject,目录结构自动生成:
first_site/
├── manage.py
└── first_site/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
再运行python manage.py runserver,浏览器输入http://127.0.0.1:8000——一只火箭图标赫然出现,写着“It worked!”
那一刻,我像个第一次做出纸飞机的小学生,兴奋得差点喊出声。还好及时捂住嘴,不然又要吵醒隔壁房间的娃。
但冷静下来一想:这不就是个“Hello World”吗?离真正的网站还差十万八千里。不过,Django的约定优于配置哲学确实让我惊艳——不用写一堆XML或注解,开箱即用,连数据库都默认配好了SQLite。
三、从爬虫到Web:为什么Django适合“奶爸开发者”?
很多人学Django是为了做后台管理系统,但我最初的动力其实是整合爬虫数据。
之前用Java写爬虫,得搭配Jsoup + HttpClient + 自己解析JSON,还得处理反爬、代理、异步……一套下来,代码比娃的尿布还厚。而Python的requests + BeautifulSoup,十行搞定。
但问题来了:爬下来的数据放哪?怎么展示?
这就是Django的用武之地。
我新建了一个app叫jobs:
python manage.py startapp jobs
然后定义模型(Model):
# jobs/models.py
from django.db import models
class Job(models.Model):
title = models.CharField(max_length=200)
company = models.CharField(max_length=100)
salary = models.CharField(max_length=50)
url = models.URLField()
created_at = models.DateTimeField(auto_now_add=True)
接着,运行迁移命令:
python manage.py makemigrations
python manage.py migrate
数据库表自动生成!不用写SQL,不用连Navicat,一切都在代码里。这种ORM(对象关系映射) 的爽感,是Java JPA用户懂的痛——Hibernate配错一个注解,debug一整天。
更妙的是,Django自带Admin后台。注册一下模型:
# jobs/admin.py
from django.contrib import admin
from .models import Job
admin.site.register(Job)
创建超级用户:
python manage.py createsuperuser
登录/admin,哇塞!一个功能完整的后台管理界面出来了,增删改查全都有,连搜索、过滤都内置了。我老婆看到后说:“你这不比我们公司花10万外包做的系统还好看?”
四、GitHub实战:把项目托管,顺便学协作
当然,光本地跑没用。得上GitHub。
我建了个仓库叫django-job-spider,把代码推上去。过程中踩了个坑:忘记加.gitignore,结果把__pycache__和db.sqlite3也传了,被同事笑话:“阿强,你连数据库都开源?”
赶紧补上标准Python的.gitignore,重置提交。这也让我意识到:Django项目结构清晰,天然适合Git管理——配置、逻辑、模板分离,多人协作也不乱。
更关键的是,GitHub上有无数Django starter template,比如cookiecutter-django,直接生成生产级项目骨架。我后来用它重构了项目,加了Celery异步任务(用来跑定时爬虫)、Redis缓存、Docker部署……虽然现在还只是玩具项目,但架构已经像模像样。
五、Java vs Python:不是取代,而是互补
有人问我:“你是不是要转行Python了?”
我说:“不,Java还是我的饭碗,但Python是我的瑞士军刀。”
Django让我明白:技术栈不是非此即彼,而是场景适配。
- 公司级高并发、强事务系统?Java + Spring Cloud 稳如泰山。
- 个人项目、快速原型、数据分析、自动化脚本?Python + Django/Flask 秒杀全场。
而且,Django的MTV(Model-Template-View)模式,其实和Java的MVC异曲同工。只是Python语法更简洁,开发速度更快——对我这种每天只有2小时自由时间的奶爸来说,时间就是最稀缺的资源。
上周我甚至用Django写了个“娃的疫苗提醒”小工具,爬取疾控中心页面,解析下次接种时间,自动发微信通知(用Server酱)。老婆再也不用翻纸质本子了,直呼“高科技”。
六、给同样处境的朋友几点建议
如果你也像我一样:
- 被家庭挤压了学习时间
- 技术焦虑但不知从何下手
- 想用副业增加收入却无从开始
那么,试试Django吧。不是因为它多牛,而是因为它对新手极其友好,且能快速产出可见成果——这对长期处于“无效努力”状态的中年程序员来说,太重要了。
具体建议:
- 从最小可行项目开始:别一上来就想做电商。先做个TODO List,再做个博客,最后才是爬虫+展示。
- 善用Django Admin:省下80%的CRUD时间,专注业务逻辑。
- GitHub是你最好的老师:搜“django beginner project”,fork一个,改一改,比看视频高效十倍。
- 别怕Python基础弱:Django文档本身就是最佳Python教程,边做边学。
- 接受“不完美”:我的第一个项目连用户登录都没有,但至少跑起来了——完成比完美重要。
七、结语:技术人的深夜,是孩子的梦乡
写这篇文章时,已经是凌晨2点13分。窗外老城区的巷子静得出奇,只有偶尔一辆摩托驶过。我保存好Markdown文件,关掉终端,轻轻推开儿童房的门——两个娃睡得正香,小脸红扑扑的。
突然觉得,学Django的意义,或许不只是搞个副业或跳槽涨薪。
而是在被生活压得喘不过气时,还能为自己保留一块“创造”的角落。
在这里,我不是谁的爸爸,不是谁的员工,只是一个用代码改变世界的程序员——哪怕改变的,只是一个小小的网页。
所以,如果你也在深夜打开IDE,请记住:
每一个runserver的背后,都是一个不甘心的灵魂。
Django的口号是:“The web framework for perfectionists with deadlines.”
而我想说:“也是给奶爸、打工人、梦想家的温柔武器。”
共勉。
—— 阿强,广州荔湾,2024年6月于娃睡后的书桌前

评论 0