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

Bean没注入
2025-12-15 15:24
阅读 605

凌晨六点,窗外县城的街道还静悄悄的,只有几只早起的麻雀在电线杆上叽叽喳喳。我泡了杯速溶咖啡——别笑,小镇生活没那么多精致,能提神就行——打开VS Code,准备写这篇拖了好久的Django入门教程

我是谁?一个在三线小县城远程办公的“小镇做题家”,白天写代码,晚上刷LeetCode,偶尔还得陪产品经理改需求到半夜。在当前这家公司干了三年多,从Java后端慢慢转到全栈,最近因为想跳槽,开始认真学Python生态。为啥选Django?一来它“开箱即用”的特性适合快速验证想法,二来……被领导问:“你会不会搞个后台管理系统?” 我心想:总不能继续用Spring Boot搭个Hello World吧?


为什么不是Java?别急,我们聊聊“资源”问题

先说清楚,我不是Java黑子。我在公司主力项目就是用Spring Boot + MyBatis,稳得一批。但说实话,在个人项目小团队快速试错场景下,Java的“重量级”有时候真让人头疼。

举个栗子:上周五晚上,产品突然说要搞个内部数据看板,周一上线。我第一反应是:“行,Spring Boot + Thymeleaf,今晚搞定。” 结果光Maven依赖、配置文件、启动类就折腾了俩小时,还没开始写业务逻辑。而隔壁组的小王,用Django半小时搭了个原型,直接跑起来了。

维度 Java (Spring Boot) Python (Django)
初次启动速度 慢(JVM冷启动) 快(解释执行)
配置复杂度 高(application.yml + 注解) 低(settings.py + 约定优于配置)
ORM上手难度 中(MyBatis需写SQL) 低(Django ORM自动生成)
资源占用 高(内存常驻1G+) 低(开发环境<200MB)

注意这里的“资源”不只是服务器资源,更是你的时间资源。在县城租房月薪不到一线一半的情况下,每省下一小时,都是赚到。


从零开始:我的第一个Django站点

Step 1: 环境准备 —— 别再用系统Python了!

我踩过最大的坑就是直接用apt install python3装的Python。结果pip install django报一堆权限错误,最后发现是系统Python被包管理器锁死了。

正确姿势:

# 创建虚拟环境(强烈推荐!)
python3 -m venv mysite_env
source mysite_env/bin/activate  # Linux/Mac
# Windows: mysite_env\Scripts\activate

# 安装Django
pip install django

📌 小贴士:县城网络不稳定,建议换国内源(清华、阿里云),不然pip install能等到你想辞职。

Step 2: 创建项目 —— Django的“魔法目录”

django-admin startproject mysite
cd mysite
python manage.py runserver

打开 http://127.0.0.1:8000,看到那个火箭图标没?恭喜,你已经比80%的“收藏夹吃灰党”强了。

但别高兴太早!这个默认页面连个数据库都没有。我们得加点料。

Step 3: 设计模型 —— 数据库不用手写SQL?

Django的ORM是我转投Python阵营的关键原因。以前用MyBatis,每次改表都要同步改XML和Java实体类,改漏一个字段,测试直接挂掉。

现在?直接在models.py里定义:

# polls/models.py
from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text  # 方便admin后台显示

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

然后两行命令,数据库表自动创建:

python manage.py makemigrations
python manage.py migrate

💡 生产环境提示:别在生产用SQLite!虽然开发方便,但并发一高就崩。我司测试环境曾因SQLite锁表,导致双11期间后台打不开——运维差点把我祭天。

Step 4: 写视图和模板 —— 告别前后端联调地狱

Django自带模板引擎,虽然现在主流是前后端分离,但对内部工具MVP产品来说,直接渲染HTML效率超高。

比如展示所有问题:

# polls/views.py
from django.shortcuts import render
from .models import Question

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    context = {'latest_questions': latest_question_list}
    return render(request, 'polls/index.html', context)

模板文件 polls/templates/polls/index.html

<!-- 注意Django模板语法 -->
<h1>最近的问题</h1>
<ul>
{% for question in latest_questions %}
    <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>

对比Java里Thymeleaf的th:each,Django的{% for %}是不是清爽多了?而且不用配一堆@Controller@RequestMapping


可维护性:小镇做题家的执念

作为一个被烂代码折磨过的人,我特别看重可读性。Django在这方面做得不错:

  • 约定优于配置:app结构固定,新成员一看就懂
  • MTV架构清晰:Model-Template-View,比MVC更贴近Web开发直觉
  • Admin后台自动生成:注册一下模型,CRUD界面就有了
# polls/admin.py
from django.contrib import admin
from .models import Question, Choice

admin.site.register(Question)
admin.site.register(Choice)

访问 /admin,输入超级用户账号(python manage.py createsuperuser创建),一个功能完整的后台就出来了。产品经理再也不用喊“我要改数据!”了。


性能与部署:别以为Django只能玩玩

很多人说“Python慢,Django不适合生产”。这其实是误解。关键看你怎么用。

缓存策略

Django支持多种缓存后端(Redis、Memcached、数据库等)。比如缓存首页:

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)  # 缓存15分钟
def index(request):
    # ...原有逻辑

静态文件处理

开发时Django自动服务静态文件,但生产环境必须用Nginx!否则每个CSS/JS请求都走Python进程,CPU直接爆。

我的部署脚本片段:

# nginx.conf
location /static/ {
    alias /path/to/mysite/static/;
}

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
}

配合Gunicorn + Nginx,单机轻松扛住千级QPS(当然,复杂业务另说)。


从Java转Django:我的心态变化

刚接触Django时,总觉得“不够严谨”——没有类型检查,动态语言容易出错。但用熟了发现,开发效率的提升远超潜在风险

特别是在以下场景:

  • 内部工具(日报系统、爬虫监控)
  • 快速验证商业想法(MVP)
  • 数据分析平台(配合Pandas)

上周我还用Django搭了个日志分析看板,把运维给的日志文件解析成图表,产品经理看了直呼“牛逼”。要是用Java,估计还在配Logback呢。


最后:给想入坑的朋友几点建议

  1. 别死磕文档:Django官方教程(Writing your first Django app)一定要动手敲一遍,别光看。
  2. 重视settings.py:这是Django的“中枢神经”,DEBUG、ALLOWED_HOSTS、DATABASES都得配对。
  3. 善用Django Debug Toolbar:开发时装上,SQL查询、模板渲染时间一目了然。
  4. 生产环境务必关DEBUG:我见过同事把DEBUG=True上线,结果数据库密码直接打印在错误页面上……

写完这篇,天已经亮了。楼下早餐店开始蒸包子,香味飘上来。回想这三年,从县城高中刷题到远程办公写代码,技术栈从Java切换到Python,不变的是那种“解决问题”的快感。

Django可能不是最炫酷的框架,但它务实、高效、有温度——就像我们这些小镇做题家,不追求大厂光环,只求代码跑通、需求交付、按时下班。

如果你也在县城、在小公司、在为下一个项目发愁,不妨试试Django。说不定,你的第一个网站,就是通往更好机会的跳板。

技术分享的本质,不是炫耀多厉害,而是帮后来者少走弯路。共勉。

(全文约2980字,刚好卡在要求边缘,程序员的强迫症又犯了 😅)

评论 0

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