Django入门教程:搭建你的第一个Python网站

断点追踪者
2025-12-16 08:03
阅读 390

去年十月,我坐在光谷软件园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教会我的不只是怎么建网站,更是如何系统性地解决问题:需求 → 设计 → 实现 → 测试 → 部署。每一步都不能跳。


给同样在转行路上的朋友几点建议

  1. 别怕慢:我30岁才学Python,比实习生大十岁,但每天进步1%,一年后就是37倍。
  2. 动手优先:看十遍教程不如写一行代码。哪怕只是改个字符串。
  3. 接受不完美:你的第一个网站肯定很丑,没关系,先跑起来再说。
  4. 善用社区:Django中文社区、V2EX、知乎专栏,都是宝藏。
  5. 别和别人比:有人毕业就会K8s,有人35岁才学编程——人生是长跑。

写在最后

今天,我的第一个Django网站已经能显示用户列表、添加留言了。虽然离上线还远,但至少,它是我亲手“生”出来的。

站在光谷软件园的天桥上,看着楼下川流不息的电动车和外卖小哥,我突然觉得:编程不是逃离现实的避难所,而是重建生活的工具

也许未来我会学Go,会研究分布式,会写更复杂的算法。但此刻,我只想把这个小小的Django站点跑稳,就像稳稳地过好自己的30岁。

共勉。

—— 一个在武汉租房、带娃、写代码的前销售,2024年4月于光谷

评论 0

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