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

半夜部署日记
2025-12-17 17:19
阅读 1661

大家好,我是你们的技术UP主小D。在B站做后端开发教学已经快两年了,经常收到私信问:“我想学Web开发,从哪开始?”、“Django难不难?”、“零基础能学会吗?”

我的答案永远是:能!而且应该从Django开始。

为什么?因为我在大厂做后端开发三年,也带过不少实习生。我发现,很多同学一上来就去啃Flask、FastAPI,结果连“什么是路由”、“为什么需要模板”都没搞明白,就被复杂的配置劝退了。而Django就像一位耐心的老师——它把Web开发中最核心的概念都封装好了,你只需要跟着它的节奏走,就能快速做出一个真正能跑的网站。

更重要的是,Django是面试高频考点。我面过几十个应届生,只要简历写了“熟悉Django”,90%都会被问到“Django的MTV架构是什么?”、“中间件怎么用?”这类问题。

所以今天,我就手把手带你搭建人生第一个Python网站。全程零基础友好,代码一行一行写,概念一个一个讲。准备好了吗?Let’s go!


一、Django 是什么?能用来做什么?

简单说:Django 是一个用 Python 写的 Web 框架

你可以把它想象成一套“建房子的工具箱”:

  • 它自带锤子(数据库操作)
  • 自带锯子(用户认证)
  • 自带图纸(项目结构)
  • 甚至还有装修师傅(Admin后台)

你不需要从零造轮子,只需要告诉它“我要建一个博客”、“我要做一个电商”,它就能帮你快速搭出骨架。

我当初学的时候,第一周就做出了一个带登录、发帖、评论功能的小论坛——这在其他语言里可能要一个月。

Django 特别适合:

  • 快速原型开发
  • 内容管理系统(CMS)
  • 后台管理平台
  • 中小型Web应用

二、环境准备:5分钟搞定开发环境

第一步:安装 Python

确保你电脑上有 Python 3.8+。打开终端(Mac/Linux)或命令提示符(Windows),输入:

python --version
# 或
python3 --version

如果没安装,请去 python.org 下载最新版。记得勾选 “Add to PATH”!

第二步:创建虚拟环境(强烈推荐!)

虚拟环境就像一个“独立沙盒”,避免不同项目的依赖冲突。

# 创建虚拟环境(名字叫 mysite_env)
python -m venv mysite_env

# 激活虚拟环境
# Windows:
mysite_env\Scripts\activate
# Mac/Linux:
source mysite_env/bin/activate

激活后,命令行前面会多一个 (mysite_env),说明成功了。

第三步:安装 Django

在虚拟环境中执行:

pip install django

验证是否安装成功:

django-admin --version
# 输出类似:4.2.7

⚠️ 避坑指南:不要全局安装 Django!一定要用虚拟环境。我见过太多人因为没用虚拟环境,导致项目依赖混乱,最后重装系统……


三、核心概念:用最简单的语言解释 MTV

Django 遵循 MTV 架构(Model-Template-View),这是新手最容易懵的地方。别怕,我用“点外卖”来比喻:

角色 对应组件 作用
你(用户) 浏览器 发起请求:“我要一份宫保鸡丁”
外卖App View(视图) 接收请求,决定“去哪家店下单”
餐厅厨房 Model(模型) 负责做菜(操作数据库)
菜品照片 Template(模板) 展示给用户看的页面

所以:

  • Model:定义数据结构(比如“文章”有标题、内容、作者)
  • Template:HTML 页面,负责展示
  • View:处理逻辑,比如“当用户访问首页时,去数据库查10篇文章,然后交给模板显示”

我当初学的时候,死记硬背“MVC vs MTV”,结果越学越晕。后来发现:不用纠结名字,只要知道谁负责什么就行


四、实战:搭建你的第一个网站(投票应用)

我们将做一个超简单的“投票系统”:用户可以看到问题列表,点击进入详情页投票。

步骤1:创建项目

django-admin startproject mysite
cd mysite

目录结构如下:

mysite/
    manage.py          # 项目管理脚本
    mysite/            # 项目配置文件夹
        __init__.py
        settings.py    # 核心配置(数据库、时区等)
        urls.py        # 总路由
        asgi.py
        wsgi.py

步骤2:启动开发服务器

python manage.py runserver

打开浏览器,访问 http://127.0.0.1:8000,看到火箭🚀页面,恭喜!你的网站跑起来了!

✅ 小技巧:按 Ctrl+C 停止服务器。开发时修改代码,服务器会自动重启(除非改了urls.py或settings.py)。

步骤3:创建一个 App

Django 项目由多个 App 组成(比如 blog、shop、user)。每个 App 负责一个功能模块。

python manage.py startapp polls

现在目录多了 polls/ 文件夹。

💡 面试题预警:Django 中 Project 和 App 的区别是什么?
答:Project 是整个网站,App 是其中的一个功能模块。一个 Project 可以包含多个 App。

步骤4:定义 Model(数据模型)

编辑 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')

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

解释:

  • Question 表示一个问题
  • Choice 表示选项,通过 ForeignKey 关联到 Question
  • on_delete=models.CASCADE:如果问题被删,选项也一起删

步骤5:激活 Model(创建数据库表)

Django 用 迁移(Migration) 来同步模型和数据库。

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

# 执行迁移(创建表)
python manage.py migrate

🛠️ 工具提示:makemigrations 只是生成 SQL 脚本,migrate 才真正执行。

步骤6:注册 App 到项目

编辑 mysite/settings.py,在 INSTALLED_APPS 中添加 'polls'

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

步骤7:创建视图(View)

编辑 polls/views.py,写一个简单视图:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

步骤8:配置 URL 路由

先在 polls/ 目录下新建 urls.py

from django.urls import path
from . import views

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

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

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),  # ← 新增
    path('admin/', admin.site.urls),
]

现在访问 http://127.0.0.1:8000/polls/,就能看到 "Hello, world..." 了!

🔁 路由流程:
用户访问 /polls/ → 项目 urls.py 匹配到 include('polls.urls') → 转发到 polls/urls.py → 调用 views.index


五、常见问题 & 解决方案

❌ 问题1:ImportError: No module named 'polls'

原因:忘记在 settings.pyINSTALLED_APPS 中注册 App。

解决:检查是否添加了 'polls'


❌ 问题2:页面报 404

原因:URL 配置错误,或者路径拼写不对。

解决

  • 检查 polls/urls.py 中的 path
  • 检查项目 urls.py 中是否 include 了 polls
  • 确保访问的是 /polls/ 而不是 /poll/

❌ 问题3:修改模型后页面没变化

原因:只改了 models.py,但没执行迁移。

解决

python manage.py makemigrations
python manage.py migrate

💡 小知识:Django 默认使用 SQLite 数据库(轻量,适合开发),生产环境建议换 PostgreSQL 或 MySQL。


❌ 问题4:中文乱码 / 时区不对

解决:修改 mysite/settings.py

# 语言 & 时区
LANGUAGE_CODE = 'zh-hans'  # 中文
TIME_ZONE = 'Asia/Shanghai'  # 上海时间
USE_I18N = True
USE_TZ = False  # 开发时可设为 False,避免时区问题

六、学习建议 & 下一步

恭喜你!你已经完成了 Django 的第一个里程碑。但这只是开始,接下来你可以:

✅ 必学进阶内容

主题 为什么重要 面试频率
Django Admin 快速搭建后台管理系统 ⭐⭐⭐⭐
模板继承(Template Inheritance) 避免重复写 HTML ⭐⭐⭐
表单处理(Forms) 处理用户输入 ⭐⭐⭐⭐
用户认证(Auth) 登录/注册功能 ⭐⭐⭐⭐⭐
REST API(配合 DRF) 前后端分离必备 ⭐⭐⭐⭐

📚 推荐学习路径

  1. 官方教程 Part 1-7(djangoproject.com
  2. 动手做一个博客系统(带分类、标签、评论)
  3. 学习 Django REST Framework(DRF),做 API 接口
  4. 部署到云服务器(如阿里云、Vercel)

💬 最后送你一句我常说的话:

“不要试图一次性学会所有东西。先跑起来,再优化。”

Django 的魅力在于:哪怕你只懂 20% 的功能,也能做出 80% 的网站。剩下的,边做边学。


如果你觉得这篇教程有帮助,欢迎关注我在 B 站的频道「小D后端研究所」,我会持续更新 Django 实战系列(包括部署、性能优化、面试真题解析)。下期预告:《Django Admin 高级技巧:让后台管理效率翻倍》

有问题可以在评论区留言,我会一一回复。我们下期见!

评论 0

最热最新
暂无评论
半夜部署日记Lv.1
0
影响力
0
文章
0
粉丝