Django入门教程:搭建你的第一个Python网站——一个广州老城区奶爸的深夜技术复盘

代码里的小宇宙
2025-12-15 19:44
阅读 281

上周五晚上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 django
django-admin startproject first_site
python 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吧。不是因为它多牛,而是因为它对新手极其友好,且能快速产出可见成果——这对长期处于“无效努力”状态的中年程序员来说,太重要了。

具体建议:

  1. 从最小可行项目开始:别一上来就想做电商。先做个TODO List,再做个博客,最后才是爬虫+展示。
  2. 善用Django Admin:省下80%的CRUD时间,专注业务逻辑。
  3. GitHub是你最好的老师:搜“django beginner project”,fork一个,改一改,比看视频高效十倍。
  4. 别怕Python基础弱:Django文档本身就是最佳Python教程,边做边学。
  5. 接受“不完美”:我的第一个项目连用户登录都没有,但至少跑起来了——完成比完美重要。

七、结语:技术人的深夜,是孩子的梦乡

写这篇文章时,已经是凌晨2点13分。窗外老城区的巷子静得出奇,只有偶尔一辆摩托驶过。我保存好Markdown文件,关掉终端,轻轻推开儿童房的门——两个娃睡得正香,小脸红扑扑的。

突然觉得,学Django的意义,或许不只是搞个副业或跳槽涨薪。
而是在被生活压得喘不过气时,还能为自己保留一块“创造”的角落。

在这里,我不是谁的爸爸,不是谁的员工,只是一个用代码改变世界的程序员——哪怕改变的,只是一个小小的网页。

所以,如果你也在深夜打开IDE,请记住:
每一个runserver的背后,都是一个不甘心的灵魂。

Django的口号是:“The web framework for perfectionists with deadlines.”
而我想说:“也是给奶爸、打工人、梦想家的温柔武器。”

共勉。

—— 阿强,广州荔湾,2024年6月于娃睡后的书桌前

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝