请写一篇关于【Django入门教程:搭建你的第一个Python网站】的技术文章
去年十月,我坐在浦东张江某栋写字楼的茶水间里,手里捏着刚打印出来的简历,第37次被HR婉拒:“同学,你这Java项目经验太少了,我们主要用Spring Boot……”
我低头看了看自己那页薄得可怜的A4纸——三年Java后端开发,工资卡在15K,租房3500块/月,女朋友小雅(对,就是现在合租那位)上个月还开玩笑说:“你再不涨薪,咱俩连猫都养不起。”
当时真的很焦虑。不是因为被拒,而是我发现:我只会CRUD,连个像样的个人项目都拿不出来。
从“Java老黄牛”到“Python叛徒”
说实话,我大学学的是Java,工作后也一直用Java。Spring、MyBatis、Maven、Tomcat,一套组合拳打下来,稳如老狗。但问题也来了——所有项目都是公司内部的,GitHub上空空如也,简历上除了“参与XX系统开发”就没了下文。
小雅看我天天愁眉苦脸,有天晚上煮完泡面(对,程序员的浪漫就是泡面+火腿肠),突然说:“你不是会写代码吗?搞个自己的网站啊!哪怕是个博客,也比简历上干巴巴的‘熟悉Java’强。”
我一愣:“可我只会Java,搭个网站要配Nginx、Tomcat、MySQL,还得买域名服务器,光环境配置就得三天……”
她白了我一眼:“听说Python有个叫Django的框架,十分钟就能起个网站,你试试?”
我差点笑出声:“Django?那不是玩具吗?我们公司这种高并发场景怎么可能用……”
但她一句话点醒了我:“你又不是要去扛双十一流量,你只是想证明你会做东西。
上周五晚上,我卸载了IDEA,装了PyCharm
说干就干。上周五晚上9点,小雅在追《繁花》,我在电脑前敲命令。
pip install django
django-admin startproject mysite
cd mysite
python manage.py runserver
浏览器输入 http://127.0.0.1:8000 —— 哇靠,一只火箭图案的“It worked!”页面弹出来。
那一刻,我居然有点感动。不用配web.xml,不用写一堆@Configuration,连数据库都给你默认用SQLite跑起来了。 这哪是框架,这是保姆!
我立刻给小雅看:“快看!我的网站上线了!”
她头也不抬:“你这跟Hello World有啥区别?”
扎心了。但她说得对。于是,我决定做个极简版“相亲经历记录系统” —— 毕竟这是我最痛的素材。
实战:用Django搭一个“相亲避雷平台”
第一步:建模型(models.py)
我想记录每次相亲的时间、地点、对方特征、雷点、评分。于是:
# models.py
from django.db import models
class DateRecord(models.Model):
name = models.CharField(max_length=50)
date = models.DateField()
location = models.CharField(max_length=100)
red_flags = models.TextField() # 雷点,比如“开口就要彩礼88万”
rating = models.IntegerField(choices=[(1, '灾难'), (2, '勉强'), (3, '还行'), (4, '不错'), (5, '想结婚')])
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.name} - {self.date}"
对比Java,我以前写个Entity得加Lombok、JPA注解、DTO、VO,光样板代码就半屏。而Django ORM直接把数据库操作抽象成Python对象,连SQL都不用写(当然,复杂查询还是得原生SQL,但入门够了)。
第二步:生成数据库表
python manage.py makemigrations
python manage.py migrate
两行命令,SQLite里自动建好表。我甚至没装MySQL!(后来部署才换PostgreSQL,但本地开发真香)
第三步:写视图(views.py)
我想展示所有记录,于是:
# views.py
from django.shortcuts import render
from .models import DateRecord
def date_list(request):
records = DateRecord.objects.all().order_by('-date')
return render(request, 'dates/list.html', {'records': records})
对比Java Spring MVC,我要写@Controller、@RequestMapping、ModelAndView,还要配Thymeleaf模板路径。Django直接render,模板路径按约定走,约定优于配置,省心。
第四步:写模板(list.html)
<!-- templates/dates/list.html -->
<h1>我的相亲黑历史</h1>
<ul>
{% for record in records %}
<li>{{ record.date }} @ {{ record.location }} - {{ record.name }} (评分: {{ record.rating }})</li>
<p>雷点: {{ record.red_flags }}</p>
{% endfor %}
</ul>
Django模板语言简单到爆,连if/for都原生支持。虽然不如JSX灵活,但胜在不用配Webpack、Babel、Node.js——对只想快速验证想法的我来说,太友好了。
第五步:配置URL
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('dates/', views.date_list, name='date_list'),
]
搞定!刷新页面,我的“相亲避雷平台”上线了。虽然丑,但它是我自己的东西,能跑,能改,能展示。
把项目塞进简历,面试官眼睛亮了
我把这个项目传到GitHub,README里写了部署步骤、技术栈、甚至加了个“未来计划”(比如加用户登录、评论功能)。
下次面试,HR问:“看你简历上有个Django项目?”
我直接打开笔记本:“您看,这是我用周末两天做的,虽然简单,但从前端到部署全链路我自己搞的。而且——” 我顿了顿,“它解决了一个真实问题:帮我老婆筛选相亲对象(笑)。”
面试官笑了,接着问了很多细节:怎么处理数据?怎么考虑扩展?有没有安全问题?
这些问题,我在Java项目里根本没机会思考——因为都是别人搭好的架子,我只负责填砖。
两周后,我拿到offer,月薪22K,涨了近50%。小雅说:“早该这么干了,Java不是不好,但你得让人看到你会‘创造’,不是只会‘搬运’。”
为什么我劝Java程序员也学点Django?
我不是说Django比Spring Boot强——高并发、微服务、企业级治理,Java生态依然无敌。 但如果你:
- 简历空空如也
- 想快速验证一个产品想法
- 想做个个人项目练手
- 或者只是想证明“我能独立做一个完整系统”
那么,Django是最快、最省力的起点。它的“开箱即用”哲学,让你把精力放在业务逻辑,而不是环境配置上。
而且,Python的简洁语法 + Django的清晰结构,反而能帮你理解Web开发的本质——路由、模型、视图、模板,这些概念在任何框架都通用。等你回过头看Spring,会发现很多设计其实异曲同工。
最后一点真心话
写这篇文章时,小雅在旁边试新买的睡衣,房租刚交,猫粮快没了,但我不再焦虑了。
因为我知道:技术不是用来卷的,是用来解决问题的。 无论是用Java写银行系统,还是用Django搭个相亲记录网站,只要它解决了真实需求,就有价值。
如果你还在用“我只会Java”当借口,不妨今晚就试试Django。不用辞职,不用报班,就花两小时,敲几行命令,跑起来再说。
跑起来,才有故事。
就像我和小雅——她当初要是没推我一把,我现在可能还在改第38版简历,写着“精通Java,熟悉Spring”,却连个能展示的链接都拿不出来。
而现在,我不仅能给她看我的代码,还能带她去迪士尼(用涨薪的钱)。
技术人的浪漫,不就是用代码改变生活吗?
附:给新手的极简Django启动清单
- 安装Python 3.8+
pip install djangodjango-admin startproject mysitecd mysite && python manage.py runserver- 访问 http://127.0.0.1:8000
- 开始你的第一个模型(别怕,它比你想象的简单)
记住:完成,比完美重要一万倍。

评论 0