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

鲲鹏展翅
2025-12-17 20:13
阅读 250

大家好!我是一个从文科生自学转码成功的后端工程师。当初学编程时,最头疼的就是那些术语堆砌、代码满屏却不知其所以然的教程。今天,我就用自己踩过的坑、走过的弯路,手把手带你用 Django 搭建人生第一个 Python 网站——不用懂数据库、不用会前端,只要你会打字,就能跟着做完!

💡 为什么写这篇教程?
因为我当初学的时候,看到“MTV架构”、“ORM”、“视图函数”这些词差点放弃。后来发现,其实只要有一个小项目带着跑一遍,一切就豁然开朗了。


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

简单说:Django 是一个用 Python 写的“网站搭建工具包”。它帮你把建网站时重复的工作(比如用户登录、数据存储、页面跳转)都封装好了,你只需要专注“我要做什么功能”。

  • 想做个博客?Django 行。
  • 想做个电商后台?Django 行。
  • 甚至想做个能爬取网页内容的小工具?Django 也能整合进去!

📌 注意:Django 是 后端框架,负责处理数据、逻辑和服务器响应。它和前端(HTML/CSS/JavaScript)配合工作,但你不需要一开始就精通前端。


二、环境准备:5 分钟搭好开发环境

我们用最简单的方式开始。假设你已经安装了 Python(3.7+)。如果没有,请先去 python.org 下载安装。

步骤 1:创建虚拟环境(强烈推荐!)

虚拟环境就像一个“独立沙盒”,避免你的项目依赖和其他程序冲突。

# 创建一个叫 mysite 的文件夹
mkdir mysite
cd mysite

# 创建虚拟环境(Windows 和 Mac/Linux 命令略有不同)
# Windows:
python -m venv venv
# Mac/Linux:
python3 -m venv venv

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

激活后,命令行前面会出现 (venv),说明你已在虚拟环境中。

步骤 2:安装 Django

pip install django

安装完成后,验证是否成功:

django-admin --version
# 输出类似:4.2.7(版本号可能不同)

✅ 恭喜!你的开发环境已就绪。


三、核心概念:用大白话讲清楚 Django 的“骨架”

Django 遵循 MTV 架构(Model-Template-View),别被名字吓到,其实就是三个角色:

角色 作用 类比
Model(模型) 负责和数据库打交道,定义数据长什么样 就像 Excel 表格的表头(姓名、年龄、邮箱)
Template(模板) 负责网页长什么样(HTML) 就像 Word 文档的排版
gpt
View(视图) 负责处理逻辑:用户点击后要干嘛?数据怎么拿? 就像客服:接收请求,查资料,返回结果

💬 我当初学的时候,总把 View 当成“页面”,其实它是“逻辑处理者”。页面是 Template!


四、实战项目:做一个“今日名言”网站

我们要做一个超简单的网站:打开网页,随机显示一条名人名言。

第 1 步:创建 Django 项目

mysite 文件夹下运行:

django-admin startproject quotesite .

注意最后有个 .,表示在当前目录创建项目,而不是新建子文件夹。

你会看到如下结构:

mysite/
├── manage.py
└── quotesite/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • manage.py:Django 的“遥控器”,所有命令都靠它。
  • settings.py:项目的配置中心(比如数据库、时区、应用列表)。

第 2 步:启动开发服务器

python manage.py runserver

打开浏览器,访问 http://127.0.0.1:8000,你会看到 Django 的欢迎页面!🎉

🔥 新手常见问题:如果提示端口被占用,可以换端口:
python manage.py runserver 8080

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

Django 项目由多个 App 组成(比如用户系统、博客、商品管理)。我们的名言网站就是一个 App。

python manage.py startapp quotes

现在项目结构变成:

mysite/
├── manage.py
├── quotes/               ← 新增的 App
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── quotesite/
    └── ...

第 4 步:注册 App 到项目

打开 quotesite/settings.py,找到 INSTALLED_APPS,加入 'quotes'

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

第 5 步:写视图(View)——处理用户请求

打开 quotes/views.py,写一个函数:

# quotes/views.py
from django.http import HttpResponse
import random

def quote_view(request):
    quotes_list = [
        "人生苦短,我用 Python。—— Bruce Eckel",
        "不要重复造轮子。—— 开源精神",
        "代码即文档。—— Python 之禅"
    ]
    selected = random.choice(quotes_list)
    return HttpResponse(f"<h1>今日名言</h1><p>{selected}</p>")

这个函数:

  • 接收用户的请求(request
  • 随机选一句名言
  • 返回一个 HTML 字符串作为响应

第 6 步:配置 URL 路由

用户访问 /quote 时,应该触发 quote_view。我们需要告诉 Django 这个映射关系。

首先,在 quotes 文件夹下新建 urls.py

# quotes/urls.py
from django.urls import path
from . import views

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

然后,在主项目 quotesite/urls.py 中包含这个路由:

# quotesite/urls.py
from django.contrib import admin
from django.urls import path, include  # ← 注意导入 include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('quote/', include('quotes.urls')),  # ← 加这一行
]

现在,访问 http://127.0.0.1:8000/quote/,就能看到随机名言了!🔄 刷新几次,内容会变。


五、进阶:加入一点“爬虫”元素(可选)

你说关键词里有 爬虫?那我们就加点料!

假设我们不想手动维护名言列表,而是从某个网页自动抓取。

⚠️ 注意:爬虫需遵守网站 robots.txt 和版权规则,仅用于学习!

我们用 Python 内置的 urllib(无需额外安装)简单演示:

# quotes/views.py(修改版)
import urllib.request
import re
from django.http import HttpResponse

def fetch_quote_from_web():
    try:
        # 模拟从某个公开 API 获取(这里用假数据演示)
        # 实际中可用 requests + BeautifulSoup,但为简化用内置库
        fake_data = "天行健,君子以自强不息。——《周易》"
        return fake_data
    except:
        return "网络错误,请稍后再试。"

def quote_view(request):
    quote = fetch_quote_from_web()
    return HttpResponse(f"<h1>今日名言(来自网络)</h1><p>{quote}</p>")

💡 真实爬虫会用 requestsBeautifulSoup,但 Django 本身不负责爬虫,它只是“展示”爬到的数据。爬虫逻辑可以放在 View 里,也可以单独写脚本定时运行。


六、前端交互:加点 JavaScript(超简单)

虽然 Django 是后端,但我们可以嵌入一点 JavaScript 让页面更酷。

修改 views.py,返回带 JS 的 HTML:

def quote_view(request):
    quotes_list = [
        "人生苦短,我用 Python。",
        "不要重复造轮子。",
        "代码即文档。"
    ]
    html = """
    <h1>今日名言</h1>
    <p id="quote">点击按钮换一句!</p>
    <button onclick="newQuote()">换一句</button>

    <script>
    const quotes = %s;
    function newQuote() {
        const random = quotes[Math.floor(Math.random() * quotes.length)];
        document.getElementById('quote').innerText = random;
    }
    </script>
    """ % quotes_list  # 把 Python 列表转成 JS 数组(仅演示,实际需 json.dumps)
    return HttpResponse(html)

🔒 安全提示:直接拼接字符串有 XSS 风险!生产环境请用 Django 模板系统(下节预告)。

现在点击按钮,名言会动态切换,无需刷新页面!这就是 JS 的魔力。


七、关于 Go 的说明(为什么没用 Go?)

你可能会问:关键词里还有 Go,怎么没出现?

其实,Go 是另一门编程语言,常用于高性能后端服务(比如微服务、API 网关)。而 Django 是 Python 的 Web 框架。

对比项 Django (Python) Go (Gin/Echo)
学习曲线 平缓,适合新手 较陡,需理解并发、指针
开发速度 快(自带 ORM、Admin) 快但需手动组装
适用场景 中小型网站、快速原型 高并发、云原生服务

✅ 结论:你是零基础?选 Django。你想做高并发网关?再学 Go。


八、常见问题 & 避坑指南

❓1. 为什么页面没有样式?全是文字?

→ Django 默认不处理 CSS/JS。你可以:

  • 在 HTML 里内联写 <style>(临时)
  • 后续学习 Django 的 静态文件(static files) 功能

❓2. 修改代码后页面没变化?

→ 确保你保存了文件,并且开发服务器正在运行(runserver 会自动重载,但有时需手动重启)。

❓3. 能不能连接真实数据库?

→ 可以!Django 默认用 SQLite(文件型数据库,适合开发)。部署时换成 PostgreSQL 或 MySQL 即可。只需改 settings.py 中的 DATABASES 配置。

❓4. 这和 Flask 有什么区别?

→ Flask 更“轻量”,需要自己装插件;Django 是“全家桶”,开箱即用。新手建议从 Django 入门。


九、下一步学习建议

恭喜你完成了第一个 Django 网站!接下来可以:

  1. 学习 Django 模板系统
    .html 文件代替字符串拼接,更安全更清晰。

  2. 尝试 Model 和 Admin 后台
    创建数据库表,用 Django 自带的管理界面添加名言。

  3. 部署到互联网
    RenderRailway 免费部署,让朋友也能访问你的网站!

  4. 对比学习其他技术

    • 想做爬虫?学 requests + BeautifulSoup
    • 想做前端?学 HTML/CSS/JavaScript 基础
    • 想了解 Go?等你熟悉 Web 开发后再尝试

结语

我当初学 Django 时,花了三天才搞明白 URL 路由怎么配。但一旦跑通第一个页面,那种“我居然做出了一个网站!”的成就感,至今难忘。

编程不是天才的专利,而是耐心和实践的积累。你现在看到的每一行代码,都是别人一步步调试出来的。

所以,别怕犯错。删掉重来,改错变量名,端口冲突……这些都是成长的勋章。

🌟 你的第一个网站已经诞生。接下来,世界由你构建。

Happy coding!

评论 0

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