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

山月写前端
2026-03-05 22:12
阅读 2020

大家好,我是技术团队的培训负责人,过去五年带过上百名应届生入门后端开发。每当看到新人面对“如何写一个网站”这个问题时一脸茫然,我就想起自己当初学的时候——以为网站就是HTML+CSS,结果发现后端才是真正的“厨房”。今天,我决定写一篇真正零基础友好的Django入门教程,手把手带你搭起第一个Python网站。

你可能会问:现在不是有Java、Kimi、RAG、Claude Code这些热门工具吗?为什么还要学Django?
其实,无论你未来想用AI编程(如Claude Code辅助生成代码)、构建知识库系统(如基于RAG架构的问答应用),还是调用大模型接口(比如Kimi开放平台),一个能跑起来的Web服务始终是底层载体。而Django,正是Python生态中最成熟、最“开箱即用”的Web框架。它让你不用从零造轮子,快速验证想法——这正是初学者最需要的。


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

1. 安装Python

Django是Python写的,所以先装Python。推荐使用 Python 3.8+(截至2024年最新稳定版兼容性最好)。

  • Windows用户:去 python.org 下载安装包,记得勾选“Add to PATH”
  • macOS用户:建议用 Homebrew 安装:brew install python
  • Linux用户:一般自带,用 python3 --version 检查版本

我当初学的时候,就因为没加PATH,命令行死活找不到python,折腾了半小时。血泪教训!

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

虚拟环境能隔离项目依赖,避免“这个项目要Django 3,那个项目要Django 4”的冲突。

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

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

激活后,命令行前缀会变成 (myenv),说明成功了。

3. 安装Django

在虚拟环境中执行:

pip install django

验证是否安装成功:

django-admin --version
# 应输出类似 4.2.7 的版本号

二、核心概念:Django到底是什么?

很多新手一上来就被“MTV模式”“ORM”“路由”这些词吓到。别怕,我用最直白的话解释:

概念 通俗解释 类比
Project(项目) 一个完整的网站工程,包含多个App 整个餐厅
App(应用) 网站的一个功能模块,比如博客、用户系统 餐厅里的厨房、收银台
View(视图) 处理用户请求并返回响应的函数或类 厨师,接到订单后做菜
Template(模板) HTML页面,可嵌入动态数据 菜单+盘子,展示菜品
Model(模型) 定义数据结构,对应数据库表 食材清单,记录有什么菜
URLconf(路由) 把URL路径映射到具体View 接待员,把客人带到对应座位

注意:Django用的是 MTV(Model-Template-View),不是MVC。但本质一样,只是名字不同。


三、实战:一步步搭建“Hello World”网站

步骤1:创建Django项目

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,你会看到经典的 “The install worked successfully!” 页面。恭喜!你的第一个Django站点已运行。

步骤3:创建一个App(比如叫“pages”)

python manage.py startapp pages

新生成的 pages/ 目录包含:

  • views.py:写处理逻辑
  • models.py:定义数据(本次不用)
  • apps.py:App配置

步骤4:写一个简单的View

编辑 pages/views.py

from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django! 这是我的第一个网页!")

步骤5:配置URL路由

Django的路由是分层的。先在 pages/ 目录下新建 urls.py

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

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

然后在主项目 mysite/urls.py 中引入:

# mysite/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')),  # 新增这一行
]

步骤6:注册App

Django需要知道你创建了新App。打开 mysite/settings.py,找到 INSTALLED_APPS,加入 'pages'

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

步骤7:刷新页面

回到浏览器刷新 http://127.0.0.1:8000,现在显示的是你自定义的“Hello, Django!”。

小成就达成:你已经完成了从0到1的闭环!


四、进阶:用模板渲染动态页面

硬编码HTML在 HttpResponse 里显然不现实。我们用Django的模板系统。

1. 创建模板目录

pages/ 下新建文件夹:

pages/
    templates/
        pages/
            home.html

为什么嵌套两层?这是Django的最佳实践,避免不同App的模板重名。

2. 编写模板

pages/templates/pages/home.html

<!DOCTYPE html>
<html>
<head>
    <title>我的第一个Django网站</title>
</head>
<body>
    <h1>欢迎来到 {{ site_name }}!</h1>
    <p>当前时间:{{ current_time }}</p>
</body>
</html>

3. 修改View传递数据

更新 pages/views.py

from django.shortcuts import render
from datetime import datetime

def home(request):
    context = {
        'site_name': 'Django新手村',
        'current_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    }
    return render(request, 'pages/home.html', context)

render() 是Django的快捷函数,自动加载模板并注入上下文数据。

4. 刷新页面

现在页面会动态显示网站名和当前时间!


五、常见问题与避坑指南

❓ 问题1:修改代码后页面没变化?

原因:Django开发服务器默认会自动重载,但有时会卡住。
解决:手动重启 python manage.py runserver

❓ 问题2:提示“TemplateDoesNotExist”?

原因:模板路径不对,或没在 INSTALLED_APPS 注册App。
检查点

  • 模板是否在 templates/pages/ 下?
  • settings.py 是否包含 'pages'

❓ 问题3:中文显示乱码?

原因:HTML没指定编码。
解决:在 <head> 中加入:

<meta charset="UTF-8">

❓ 问题4:和Java比,Django有什么优势?

对比项 Java (Spring Boot) Django (Python)
学习曲线 陡峭(需理解OOP、注解、依赖注入等) 平缓(语法简洁,约定优于配置)
开发速度 较慢(编译、类型声明) 极快(解释执行,动态类型)
适合场景 大型企业级系统 快速原型、中小型Web应用、AI集成

我带过的应届生中,用Django两周就能做出完整CRUD应用,而Java可能还在配Maven。

❓ 问题5:Kimi、Claude Code能帮我写Django吗?

当然可以!但要注意:

  • Claude CodeKimi 这类AI工具能生成基础代码,比如“创建一个博客App”,但无法替代你理解流程
  • 最佳实践:先手写一遍,再用AI优化或生成重复代码。
  • 警惕:AI可能生成过时的Django语法(如旧版URL配置)。

举个例子:你可以问Claude:“用Django 4.2写一个显示用户列表的View,用Class-Based View”,它会给出合理代码。但如果你连什么是View都不知道,AI只会让你更困惑。


六、下一步学习建议

完成这个“Hello World”后,你已经跨过了最难的第一步。接下来,我建议按以下路径深入:

  1. 学数据库操作:用Django ORM创建 BlogPost 模型,实现增删改查(CRUD)
  2. 掌握Admin后台:Django自带超强大的管理界面,一行代码启用
  3. 理解Form表单:处理用户输入,比如留言、登录
  4. 部署上线:用免费平台如Render或Vercel(支持Django)发布你的网站
  5. 探索高级主题:用户认证、REST API(配合DRF)、缓存、异步任务

⚠️ 避坑提醒:不要一上来就学“微服务”“Docker部署”“JWT鉴权”——那是进阶内容。先把基础打牢,否则容易半途而废。


结语:你的Web开发之旅,从此开始

我当初学的时候,花了三天才搞懂Django的路由怎么配。但现在,借助清晰的文档和现代工具(甚至AI辅助),你可以在一天内跑通全流程。技术在变,但动手实践永远是学习编程的不二法门。

记住:每一个复杂的系统,都是从 Hello World 开始的。你刚刚迈出的这一步,可能就是未来你开发AI驱动网站(比如集成RAG知识库查询)的起点。

现在,关掉这篇文章,打开你的终端,敲下 django-admin startproject —— 你的第一个网站,正在等待诞生。

附:常用命令速查表

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

祝你编码愉快,少些Bug,多些成就感!

评论 0

最热最新
暂无评论
山月写前端Lv.1
0
影响力
0
文章
0
粉丝