用 Django 搭建你的第一个 Python 网站,从零开始不踩坑

AI应用观察员
2025-12-22 23:44
阅读 382

大家好,我是一名工作五年的后端工程师。这几年带过不少新人,也面试过上百位求职者。我发现一个现象:很多同学对 Web 开发既好奇又害怕,总觉得“网站”两个字背后藏着一堆黑魔法。其实不是的!今天我就用最直白的方式,手把手带你用 Python 的 Django 框架搭出人生第一个网站。

为什么选 Django?
因为它像乐高——官方已经把轮子造好了,你只需要拼装。而且它特别适合初学者:文档全、社区大、自带后台管理。更重要的是,Django 是很多公司(比如 Instagram)的技术栈,学了真能用在产品里,也能应付面试题挑战!


一、准备工作:5 分钟搭好开发环境

我当初学的时候,光装环境就折腾了一整天。别怕,跟着这三步走,稳!

1. 安装 Python(3.8+)

先确认你有没有 Python:

python --version
# 或
python3 --version

如果没有,请去 python.org 下载最新版(建议 3.10+)。安装时务必勾选 “Add to PATH”(Windows 用户特别注意!)。

2. 创建虚拟环境(强烈推荐!)

虚拟环境就像给你的项目建个“隔离房间”,避免包冲突。

# 创建名为 mysite 的虚拟环境
python -m venv mysite

# 激活它(Windows)
mysite\Scripts\activate

# 激活它(Mac/Linux)
source mysite/bin/activate

激活后,命令行前面会出现 (mysite),说明成功了。

3. 安装 Django

在虚拟环境中执行:

pip install django

验证是否安装成功:

django-admin --version
# 如果显示版本号(如 4.2.7),就 OK 了!

💡 小贴士:不要直接用 pip install 全局安装 Django!养成用虚拟环境的习惯,以后你会感谢自己。


二、Django 是什么?三个核心概念讲清楚

别被“框架”吓到。Django 本质就是一套帮你快速建网站的工具箱。它基于 MTV 模式(Model-Template-View),你可以理解为:

组件 作用 类比
Model 和数据库打交道 产品的“数据仓库”
Template 网页长什么样 产品的“UI界面”
View 处理用户请求 产品的“业务逻辑”

举个例子:你想做个待办事项(To-Do)网站。

  • Model:定义“任务”有哪些字段(标题、是否完成、创建时间)
  • Template:设计一个好看的列表页面
  • View:当用户点击“添加任务”,就把数据存进数据库

是不是瞬间清晰了?


三、实战:10 分钟写出你的第一个网站

我们现在要做的,是一个极简的“欢迎页面”。虽然简单,但会涵盖完整流程!

第 1 步:创建 Django 项目

django-admin startproject mysite .

注意末尾有个点 .!这表示在当前目录创建,避免多一层文件夹。

你会看到这些文件:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py   ← 配置中心
        urls.py       ← 路由表
        asgi.py
        wsgi.ru

第 2 步:启动开发服务器

python manage.py runserver

打开浏览器,访问 http://127.0.0.1:8000 —— 看到火箭图标了吗?恭喜!你的第一个 Django 站点跑起来了!

第 3 步:创建一个 App(应用)

Django 项目由多个 App 组成。比如一个电商网站可能有 userproductorder 等 App。

我们创建一个叫 home 的 App:

python manage.py startapp home

然后告诉 Django:“我有个新 App 叫 home!”
打开 mysite/settings.py,找到 INSTALLED_APPS,加入 'home'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    # ... 其他默认项
    'home',  # ← 加这一行
]

第 4 步:写 View(处理请求)

编辑 home/views.py

from django.http import HttpResponse

def welcome(request):
    return HttpResponse("<h1>你好!这是我的第一个 Django 网站!</h1>")

第 5 步:配置 URL 路由

先在 home 目录下新建 urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.welcome, name='welcome'),
]

再修改项目的主路由 mysite/urls.py

from django.contrib import admin
from django.urls import path, include  # ← 别忘了 import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home.urls')),  # ← 把 home 的路由包含进来
]

现在刷新浏览器,你会看到大大的欢迎语!🎉


四、加点料:做个能存数据的“产品”

光显示文字太无聊了。我们来做一个真正的“产品”雏形:用户留言本!

1. 定义 Model(数据结构)

编辑 home/models.py

from django.db import models

class Message(models.Model):
    content = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.content[:20]  # 方便后台显示

2. 创建并应用数据库迁移

Django 用“迁移”来同步代码和数据库:

# 生成迁移文件
python manage.py makemigrations

# 应用到数据库(默认是 SQLite,无需额外安装)
python manage.py migrate

3. 注册到后台管理(超实用!)

Django 自带超强大的 Admin 后台。只需两步:

① 创建超级管理员账号

python manage.py createsuperuser
# 按提示输入用户名、邮箱、密码

② 在 home/admin.py 中注册模型

from django.contrib import admin
from .models import Message

admin.site.register(Message)

访问 http://127.0.0.1:8000/admin,登录后就能看到 Message 表,还能手动添加数据!

4. 显示留言列表(Template + View)

View 部分home/views.py):

from django.shortcuts import render
from .models import Message

def message_list(request):
    messages = Message.objects.all().order_by('-created_at')
    return render(request, 'home/list.html', {'messages': messages})

Template 部分
先在 home 目录下创建 templates/home/ 文件夹(注意路径!),然后新建 list.html

<!DOCTYPE html>
<html>
<head>
    <title>留言本</title>
</head>
<body>
    <h1>所有留言</h1>
    {% for msg in messages %}
        <p>{{ msg.content }} <small>({{ msg.created_at }})</small></p>
    {% endfor %}
</body>
</html>

最后改路由home/urls.py):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.message_list, name='message_list'),  # 改成显示列表
]

重启服务器,刷新页面——你的留言本上线了!

🧠 面试题挑战:
“Django 的 ORM 是什么?”
答:ORM(对象关系映射)让你用 Python 代码操作数据库,而不用写 SQL。比如 Message.objects.all() 实际执行的是 SELECT * FROM home_message;


五、新手常踩的 5 个坑 & 解决方案

问题 原因 解决方法
页面显示 404 URL 配置错误或没 include 检查 urls.pyincludepath
数据库没更新 忘记运行 migrate 每次改 models.py 后都要 makemigrations + migrate
模板找不到 templates 路径不对 确保是 app/templates/app/xxx.html 结构
修改代码不生效 开发服务器没自动重载 检查终端是否有报错;或手动重启 runserver
中文乱码 数据库编码问题 SQLite 默认支持 UTF-8,一般不会;若用 MySQL 需设 charset=utf8mb4

六、下一步怎么学?我的建议

  1. 动手做个小项目
    比如博客、天气查询、简易论坛。只有做,才能真正理解 MTV 如何协作。

  2. 对比其他语言框架
    你可能会听说 Go 的 Gin、Echo,或者 Python 的 Flask。Django 是“全功能套餐”,Flask 是“自助餐”。面试常问:“为什么选 Django 而不是 Flask?”
    答:Django 适合快速交付完整产品,内置认证、Admin、ORM;Flask 更灵活,适合微服务或定制化强的场景。

  3. 深入核心模块

    • 用户认证(django.contrib.auth
    • 表单处理(forms.py
    • 静态文件(CSS/JS 图片)
    • 部署上线(用 Gunicorn + Nginx)
  4. 别忽视基础
    Django 再强大,底层还是 HTTP、数据库、Python。建议同时巩固:

    • Python 面向对象
    • RESTful API 设计
    • 基础 SQL 语句

最后的话

我当初学 Django 时,也对着文档一脸懵。但只要你迈出第一步——跑通那个“Hello World”页面,后面就会越来越顺。所有复杂的产品,都是从一行代码开始的。

记住:不要追求一次学会所有东西。今天你能显示一个页面,明天就能加数据库,后天就能做用户登录。每天进步一点点,一个月后回头看,你会惊讶于自己的成长。

现在,关掉这篇文章,打开你的终端,敲下 django-admin startproject —— 你的开发者之旅,正式启程!🚀

评论 0

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