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

502守望者
2026-01-06 05:54
阅读 399

大家好,我是开源社区的一名老维护者,写过不少技术文档,也带过很多初学者入门后端开发。今天这篇教程,源于我当初学 Django 时踩过的坑——文档太抽象、概念太密集、环境配置就卡住半天。所以,我想写一篇真正“手把手”的入门指南,哪怕你连 Python 都没跑过,也能跟着做出一个能访问的网站。

很多人以为 Web 开发很神秘,其实它就像搭积木:框架是底座,代码是积木块,浏览器是展示台。而 Django,就是 Python 生态里最稳、最全、最适合新手的那块底座。

顺便说一句,虽然本文标题提到了“爬虫”“面试题”“代码人生”,但别担心,我们不会跑偏。Django 本身不是爬虫工具(那是 Scrapy 的主场),但理解 Web 原理对写爬虫大有帮助;面试常问 Django 原理;而“代码人生”嘛——当你亲手让一个网页在浏览器里跑起来,那种成就感,就是程序员的第一口甜头。


为什么选 Django?它到底能做什么?

Django 是一个用 Python 编写的高级 Web 框架,它的口号是:“Don’t repeat yourself”(不要重复造轮子)。它内置了用户认证、数据库管理、后台管理、URL 路由等几乎所有 Web 开发需要的功能。

你可以用它做:

  • 博客系统
  • 电商网站
  • 内部管理系统
  • API 后端服务
  • 甚至结合爬虫数据做可视化展示平台(比如把爬到的新闻存进 Django 数据库,再用网页展示)

我当初学的时候,第一反应是:“这不就是 PHP + MySQL 的 Python 版?” 其实远不止如此——Django 的 ORM 让你不用写一行 SQL 就能操作数据库,Admin 后台自动生成,安全机制默认开启……这些对新手极其友好。


第一步:搭建开发环境(耐心点,这步最关键)

1. 安装 Python(3.8+ 推荐)

python.org 下载最新版 Python(建议 3.8 到 3.12 之间)。安装时务必勾选 “Add to PATH”

验证安装:

python --version
# 或
python3 --version

如果显示版本号(如 Python 3.11.5),说明成功。

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

虚拟环境能隔离项目依赖,避免“我电脑上能跑,你电脑上不行”的经典问题。

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

# 激活虚拟环境(Windows)
mysite\Scripts\activate

# 激活虚拟环境(macOS/Linux)
source mysite/bin/activate

激活后,命令行前会多出 (mysite) 字样,表示你已进入该环境。

3. 安装 Django

在激活的虚拟环境中执行:

pip install django

验证安装:

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

💡 避坑指南:不要全局安装 Django!每个项目都应有自己的虚拟环境。我见过太多新手因为全局安装导致版本冲突,最后重装系统……


核心概念:Django 的五大支柱

Django 遵循 MTV 模式(Model-Template-View),和 MVC 类似,但 View 在 Django 里其实是 Controller。

组件 作用 类比
Model 定义数据结构(对应数据库表) 数据的“骨架”
Template 网页的 HTML 模板 页面的“皮肤”
View 处理业务逻辑,返回响应 大脑,决定怎么处理
URLconf 路由,把 URL 映射到 View 导航地图
Admin 自动生成的后台管理系统 管理员控制台

下面用一个比喻帮你理解:

假设你要开一家奶茶店:

  • Model 是菜单(珍珠、椰果、糖度选项)
  • Template 是杯子和包装(外观)
  • View 是店员(接收订单、调制奶茶)
  • URLconf 是门口的招牌(“扫码点单→View”,“堂食→另一个View”)
  • Admin 是老板的后台(查看销量、改价格)

实战:创建你的第一个 Django 网站

我们将做一个极简的“欢迎页面”网站,但它包含了 Django 的完整骨架。

步骤 1:创建项目

django-admin startproject mysite .

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

项目结构如下:

mysite/
├── manage.py          # 命令行工具入口
└── mysite/            # 项目配置包
    ├── __init__.py
    ├── settings.py    # 全局配置
    ├── urls.py        # 主路由文件
    └── wsgi.py        # 部署用

步骤 2:启动开发服务器

python manage.py runserver

看到输出:

Starting development server at http://127.0.0.1:8000/

打开浏览器,访问 http://127.0.0.1:8000/,你会看到火箭图标 —— 恭喜!Django 已运行。

🛑 常见问题:如果报错“端口被占用”,加参数换端口:

python manage.py runserver 8080

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

Django 项目由多个“应用”组成。比如博客项目可能有 blogusercomment 等应用。

python manage.py startapp hello

现在目录多了一个 hello/ 文件夹。

步骤 4:注册应用

编辑 mysite/settings.py,找到 INSTALLED_APPS,加入 'hello'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    # ...其他默认项
    'hello',  # ← 加在这里
]

步骤 5:编写 View(视图)

编辑 hello/views.py

from django.http import HttpResponse

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

步骤 6:配置 URL 路由

先在 hello/ 目录下创建 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  # ← 注意要导入 include

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

步骤 7:重启服务器,刷新页面

你应该看到自己写的 HTML 内容了!🎉

恭喜你! 这 7 步就是 Django 开发的核心循环:写 View → 配 URL → 返回响应


加点料:用 Template 做真正的网页

硬编码 HTML 不优雅。Django 的模板系统让你分离逻辑和界面。

1. 创建模板目录

hello/ 下新建文件夹:

hello/
└── templates/
    └── hello/
        └── welcome.html

💡 为什么是 templates/hello/welcome.html
Django 默认会在每个应用的 templates/ 下找模板,加上 hello/ 子目录是为了避免不同应用模板重名。

2. 编写模板文件

hello/templates/hello/welcome.html

<!DOCTYPE html>
<html>
<head>
    <title>我的第一个 Django 网站</title>
</head>
<body>
    <h1>你好,{{ name }}!</h1>
    <p>欢迎来到代码人生的第一站。</p>
</body>
</html>

3. 修改 View 使用模板

hello/views.py

from django.shortcuts import render

def welcome(request):
    context = {'name': '开发者'}
    return render(request, 'hello/welcome.html', context)

render 函数会自动查找模板,并把 context 中的数据传进去。{{ name }} 就会被替换成 "开发者"

刷新页面,效果一样,但代码更清晰了!


顺手体验 Admin 后台(Django 的王牌功能)

Django 自带一个超强大的后台,几行代码就能管理数据。

1. 创建超级用户

python manage.py createsuperuser

按提示输入用户名、邮箱、密码(密码输入时不会显示,正常输入回车即可)。

2. 访问后台

启动服务器后,访问 http://127.0.0.1:8000/admin/,用刚才的账号登录。

你会看到一个简洁的管理界面!虽然现在空空如也,但只要定义 Model,它就会自动生成增删改查界面。

这就是“综合”能力的体现——Django 把数据库、后台、权限、表单验证全包了,你专注业务就行。


新手高频问题解答

问题 原因 解决方案
ModuleNotFoundError: No module named 'django' 没激活虚拟环境 执行 source mysite/bin/activate(Linux/macOS)或 mysite\Scripts\activate(Windows)
页面显示 404 URL 配置错误 检查 urls.py 是否正确 include,路径是否匹配
修改代码后页面没变 开发服务器未自动重载 确保用 runserver 启动(不是直接 python mysite/wsgi.py
中文乱码 模板未指定编码 在 HTML <head> 中加 <meta charset="utf-8">
想用数据库但不会写 SQL 忘记用 ORM models.py 定义类,Django 自动生成表

和“爬虫”“面试题”“代码人生”的联系

你可能会问:这和爬虫有什么关系?

  • 爬虫通常负责采集数据,而 Django 负责展示和管理数据。比如你用 Scrapy 爬了 10 万条商品信息,存入数据库,再用 Django 做个商品搜索网站——这就是典型组合。
  • 很多公司面试后端岗会问:“Django 的请求生命周期是怎样的?”、“ORM 如何防止 SQL 注入?”——理解本文的 MTV 流程,你就答对了一半。
  • 代码人生不是鸡汤。当你能用代码把想法变成可交互的产品,你就拥有了“创造数字世界”的能力。而 Django,正是通往这个世界的钥匙之一。

我当初学的时候,第一个项目就是爬豆瓣电影 Top250,存进 Django,做个电影推荐页。虽然简陋,但朋友能通过链接看到,那种感觉——值了。


下一步学习建议

完成本教程后,你可以:

  1. 深入 Model:学习如何定义字段、建立关系(一对多、多对多)、使用 ORM 查询。
  2. 玩转 Admin:自定义后台列表页、筛选器、表单验证。
  3. 添加静态文件:引入 CSS/JS,让页面不再“素颜”。
  4. 做个小项目:比如个人博客(文章、分类、评论)。
  5. 部署上线:用免费平台(如 Render、Vercel + Deta)让你的网站公网可访问。

🔥 终极建议:不要只看教程!立刻动手改代码——改文字、加按钮、尝试报错。编程不是“看会的”,是“做会的”。


结语

这篇教程花了我不少心思,只为让你少走我当年的弯路。Django 的魅力在于:它既能让新手快速出成果,又能让高手构建复杂系统。你现在的“Hello World”,可能就是未来百万用户产品的起点。

记住:每一个伟大的网站,都始于一个 runserver

现在,关掉这篇文章,打开你的终端——敲下 django-admin startproject,开始你的代码人生吧。

附:常用命令速查表

命令 作用
django-admin startproject xxx 创建新项目
python manage.py startapp xxx 创建新应用
python manage.py runserver 启动开发服务器
python manage.py makemigrations 生成数据库迁移文件
python manage.py migrate 应用数据库变更
python manage.py createsuperuser 创建管理员账户

祝你编码愉快,bug 少少!

评论 0

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