Django入门教程:搭建你的第一个Python网站
去年十月,我坐在光谷软件园B2栋12楼的工位上,盯着屏幕上一行行Django代码发呆。窗外是武汉深秋微凉的天空,楼下共享单车堆成小山,而我的脑子也像被堵死的localhost:8000——怎么都跑不起来。
那时候我才转行做程序员三个月,月薪从原来做建材销售的15k涨到了22k,但每天醒来第一件事不是看天气,而是打开LeetCode刷“两数之和”。老婆在电话里还笑我说:“你以前连Excel都懒得学,现在天天跟电脑较劲?”我说:“没办法啊,房租3500,房贷6000,总得把这新饭碗端稳了。”
一切从“Hello World”开始
说实话,当初选择Python,纯粹是因为听说它“对新人友好”。我大学学的是机械工程,算法?那是什么?能吃吗?面试时HR问我:“你熟悉哪些数据结构?”我支支吾吾说:“呃……链表?好像听说过。”她笑了笑,没说话。那一刻,我真的焦虑到胃疼。
但生活没有给我退路。白天上班写业务逻辑(其实是抄文档),晚上回家就泡在B站、知乎、廖雪峰的教程里。直到上周五晚上十一点半,我终于决定动手搭一个自己的网站——用Django。
为什么选Django?一是公司后端主要用它;二是听说“自带Admin后台,贼香”;三是……Go虽然快,但我连goroutine都没搞明白,哪敢碰生产环境?(别笑,真有同事劝我直接学Go,说“Python迟早被淘汰”。我回他:“等我先把Django跑起来再说吧,老铁。”)
环境搭建:踩坑是成长的必经之路
我用的是Windows WSL2 + Ubuntu 20.04,因为公司开发机就是Linux。先装Python 3.9:
sudo apt update && sudo apt install python3-pip
然后创建虚拟环境(这一步千万别省!我第一次没用venv,结果pip包全混在一起,差点重装系统):
python3 -m venv mysite_env
source mysite_env/bin/activate
接着安装Django:
pip install django
验证一下:
django-admin --version
# 输出 4.2.7,OK,没翻车。
这时候我老婆探头进来问:“饭热好了,吃不吃?”我说:“等我把项目建完!”——典型的程序员式拖延症。
创建第一个Django项目
在终端输入:
django-admin startproject myfirstsite
cd myfirstsite
python manage.py runserver
浏览器打开 http://127.0.0.1:8000,熟悉的火箭图标出现了!It worked! 那一刻我居然有点想哭——不是感动,是终于不用再看404错误页面了。
但很快问题来了:我想改个欢迎语,比如“Hello, 武汉光谷打工人!”。
于是打开 myfirstsite/settings.py,确认时区:
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True
然后新建一个app:
python manage.py startapp homepage
在 homepage/views.py 里写:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, 武汉光谷打工人!")
再配路由 myfirstsite/urls.py:
from django.urls import path
from homepage import views
urlpatterns = [
path('', views.index, name='home'),
]
重启服务器,刷新页面——成功!
我激动地截图发到家庭群,结果我妈回:“这黑底白字,是不是电脑坏了?”……算了,不解释了。
算法?其实无处不在
说到算法,很多人觉得必须刷Hard题、手撕红黑树才算。但在我这个菜鸟看来,哪怕是一个简单的URL路由匹配、数据库查询优化,背后都是算法思想的体现。
比如Django ORM查用户:
User.objects.filter(age__gt=25)
这背后涉及索引、B+树、时间复杂度——虽然我不用自己实现,但得知道为什么加了db_index=True会快。
上周Code Review,组长指着我写的循环查数据库说:“你这N+1问题,懂不懂?”我脸一红,赶紧去补了Django的select_related。那一刻我意识到:转行不是换个工具,而是换一种思维方式。
Go vs Python:别被 hype 带偏
总有声音说“Python慢,Go才是未来”。确实,Go在并发、微服务上优势明显,我也在学(晚上九点后,孩子睡了才敢开Go by Example)。
但对我这种新人来说,Django的优势太实在了:
- 自带用户认证、Admin后台
- ORM让数据库操作像写SQL一样自然
- 社区文档丰富,Stack Overflow一搜就有答案
Go虽然快,但生态分散,新手容易迷失在各种框架(Gin? Echo? Beego?)。而Django是“约定优于配置”,你照着官方教程走,八成不会错。
我不是说Go不好,只是适合的才是最好的。我现在工资涨了,但技术债也多了。如果一开始就贪图“高大上”,可能早就放弃了。
真实的成长:从焦虑到踏实
记得刚入职时,我连Git分支都搞混过,把dev代码直接推到main,导致测试环境炸了。那天晚上我一个人在办公室改到凌晨两点,心里全是“我是不是不适合干这行”。
但现在回头看,那些报错、那些熬夜、那些被同事吐槽的代码,反而成了最扎实的积累。
Django教会我的不只是怎么建网站,更是如何系统性地解决问题:需求 → 设计 → 实现 → 测试 → 部署。每一步都不能跳。
给同样在转行路上的朋友几点建议
- 别怕慢:我30岁才学Python,比实习生大十岁,但每天进步1%,一年后就是37倍。
- 动手优先:看十遍教程不如写一行代码。哪怕只是改个字符串。
- 接受不完美:你的第一个网站肯定很丑,没关系,先跑起来再说。
- 善用社区:Django中文社区、V2EX、知乎专栏,都是宝藏。
- 别和别人比:有人毕业就会K8s,有人35岁才学编程——人生是长跑。
写在最后
今天,我的第一个Django网站已经能显示用户列表、添加留言了。虽然离上线还远,但至少,它是我亲手“生”出来的。
站在光谷软件园的天桥上,看着楼下川流不息的电动车和外卖小哥,我突然觉得:编程不是逃离现实的避难所,而是重建生活的工具。
也许未来我会学Go,会研究分布式,会写更复杂的算法。但此刻,我只想把这个小小的Django站点跑稳,就像稳稳地过好自己的30岁。
共勉。
—— 一个在武汉租房、带娃、写代码的前销售,2024年4月于光谷

评论 0