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

指针迷路了
2025-12-18 11:28
阅读 2551

大家好!我是一名从培训班走出来的前端开发,但别误会——今天我不是来教前端的。在我刚入行那会儿,公司里前后端分离还没现在这么彻底,老板经常说:“你既然是搞技术的,能不能顺手搭个后台?不用多复杂,能跑就行。”于是我就硬着头皮去学后端,第一次接触的就是 Django

我当初学的时候,最头疼的不是代码本身,而是那些“理所当然”的术语和跳步操作。比如教程一上来就说“创建项目”,但没告诉你 Python 要装哪个版本,pip 是啥,虚拟环境又是什么鬼……结果折腾半天连 django-admin 都跑不起来。

所以今天,我想用最接地气的方式,带你从零开始,亲手搭建你的第一个 Python 网站。哪怕你完全没碰过后端,甚至对编程只有模糊概念,也能跟着一步步做出来。这篇文章不会堆砌术语,而是聚焦在你能做什么、怎么做、为什么这么做


一、Django 是什么?能用来干啥?

简单说:Django 是一个用 Python 写的“网站制造机”

  • 它帮你自动处理数据库、用户登录、URL 路由这些麻烦事。
  • 你只需要告诉它:“当用户访问 /hello 时,显示‘你好世界’”,剩下的框架都给你搞定。
  • 很多大公司(比如 Instagram、知乎早期)都用 Django 搭建过系统。

💡 小知识:虽然我是前端出身,但 Django 的模板系统和前端很像——你可以把它理解成“后端版的 HTML + 数据绑定”。

为什么选 Django 而不是 Go 或其他?

技术 特点 适合人群
Django (Python) “开箱即用”,自带管理后台、ORM、用户系统 零基础、想快速出效果的新手
Go 性能高、并发强,但需要自己造轮子 有经验、追求高性能的后端开发者
Node.js (JavaScript) 前端开发者友好,但生态分散 已会 JS、想全栈的前端

📌 提醒:如果你是前端,可能会听说“现在流行 Go”,但别被带偏节奏。学习顺序比技术潮流更重要。Django 能让你快速理解“网站是怎么工作的”,这才是核心。


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

✅ 目标:让电脑能运行 Django 项目

第 1 步:安装 Python

验证是否成功:

python --version
# 或
python3 --version

看到类似 Python 3.10.12 就说明装好了。

第 2 步:创建虚拟环境(非常重要!)

我当初就是因为没用虚拟环境,把系统包搞乱了,重装了好几次……

虚拟环境就像给你的项目单独建个“小房间”,避免和其他项目的依赖打架。

# 创建一个叫 mysite 的文件夹(项目根目录)
mkdir mysite
cd mysite

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

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

激活后,命令行前面会多出 (venv),说明你现在在“小房间”里了。

第 3 步:安装 Django

pip install django

验证安装:

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

⚠️ 注意:所有后续操作都要在 激活虚拟环境 的状态下进行!


三、核心概念:用大白话讲清楚

Django 有三个核心概念,新手最容易懵:

1. 项目(Project) vs 应用(App)

  • 项目(Project):整个网站,比如“我的博客系统”
  • 应用(App):网站里的一个功能模块,比如“用户管理”、“文章发布”

👉 一个项目可以包含多个 App。就像一辆车(项目)有引擎、轮胎、空调(App)。

2. MTV 模式(Django 的 MVC)

  • M(Model):数据结构,比如“一篇文章有标题、内容、作者”
  • T(Template):前端页面,就是 HTML 文件
  • V(View):中间人,负责“拿到数据 + 渲染页面”

💡 对比前端:View ≈ Vue 组件的逻辑部分,Template ≈ template 标签,Model ≈ 后端 API 返回的数据结构。

3. URL 路由

用户访问 http://127.0.0.1:8000/hello,Django 会根据你写的规则,找到对应的 View 函数来处理。


四、实战:搭建你的第一个网站

🎯 目标:访问 /hello 时,显示“你好,Django!”

步骤 1:创建项目

django-admin startproject mysite .

注意最后那个 .,表示在当前目录创建,避免多一层文件夹。

此时目录结构:

mysite/
├── manage.py
├── mysite/
│   ├── __init__.py
│   ├── settings.py    ← 配置文件
│   ├── urls.py        ← 主路由文件
│   └── wsgi.py
└── venv/              ← 虚拟环境(你之前建的)

步骤 2:启动开发服务器

python manage.py runserver

打开浏览器,访问 http://127.0.0.1:8000,看到火箭图标就成功了!

🔥 小技巧:按 Ctrl + C 可以停止服务器。

步骤 3:创建一个 App

我们要做一个“问候”功能,新建一个 App:

python manage.py startapp hello_app

目录新增:

hello_app/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py      ← 我们要改这里!

步骤 4:写 View(视图)

编辑 hello_app/views.py

from django.http import HttpResponse

def say_hello(request):
    return HttpResponse("你好,Django!")

步骤 5:配置 URL 路由

Django 不会自动知道 /hello 对应哪个函数,需要手动告诉它。

第一步:在 hello_app 里创建 urls.py

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

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

第二步:在主项目 mysite/urls.py 中引入这个 App 的路由:

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

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

🧩 路由匹配流程:

  1. 用户访问 /hello/
  2. urls.py 匹配到 path('hello/', ...)
  3. 把请求交给 hello_app/urls.py
  4. hello_app/urls.py 中的 path('', ...) 匹配空路径 → 调用 say_hello

步骤 6:注册 App(重要!)

Django 默认不知道你新建的 App,需要在 mysite/settings.py 中注册:

# mysite/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    # ... 其他默认项
    'hello_app',  # ← 在最后加上这一行
]

步骤 7:测试!

重启服务器(如果之前关了的话):

python manage.py runserver

访问 http://127.0.0.1:8000/hello/,你应该看到:

你好,Django!

🎉 恭喜!你已经做出了第一个 Django 页面!


五、进阶一点:加个前端模板

纯文字太单调,我们改成 HTML 页面。

1. 创建模板文件夹

hello_app 下新建:

hello_app/
└── templates/
    └── hello.html

2. 写 HTML

hello_app/templates/hello.html

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

{{ name }} 是 Django 模板语法,相当于变量占位符。

3. 修改 View

from django.shortcuts import render

def say_hello(request):
    context = {'name': '小明'}
    return render(request, 'hello.html', context)

render 会自动去 templates 文件夹找模板。

4. 访问 /hello/,看到带样式的页面!


六、新手常见问题 & 避坑指南

❌ 问题 1:command not found: django-admin

  • 原因:没激活虚拟环境,或者没装 Django
  • 解决:先 source venv/bin/activate(macOS/Linux)或 venv\Scripts\activate(Windows),再 pip install django

❌ 问题 2:页面显示 404

  • 检查 URL 是否写对(比如 /hello/ 最后要有斜杠)
  • 检查 settings.py 是否注册了 App
  • 检查 urls.pyinclude 是否拼写正确

❌ 问题 3:修改代码后页面没更新

  • Django 开发服务器会自动重载,但有时卡住
  • 手动 Ctrl + C 停止,再重新 runserver

❌ 问题 4:中文显示乱码

  • 确保 HTML 文件保存为 UTF-8 编码(大多数编辑器默认就是)
  • 在 HTML <head> 中加 <meta charset="UTF-8">

七、下一步怎么学?给你的学习建议

你已经迈出了最难的第一步!接下来:

1. 学习路径建议

阶段 学习内容 推荐实践
入门 Model(数据库)、Admin 后台 做一个“留言板”
进阶 表单处理、用户认证 实现注册/登录功能
综合 REST API、前后端分离 用 Django 做后端,Vue/React 做前端
运营 部署上线(Nginx + Gunicorn) 把网站放到云服务器上

2. 别急着学 Go!

很多新人看到“Go 很火”就转头去学,结果基础没打牢。Django 能让你快速理解 Web 开发全貌,包括:

  • 请求-响应模型
  • 数据库交互
  • 用户会话
  • 安全机制(CSRF、XSS 防护)

这些概念在 Go、Node.js 里同样存在,只是实现方式不同。先掌握“道”,再换“术”

3. 和前端结合

既然你是前端(或对前端感兴趣),可以尝试:

  • 用 Django 提供 JSON API(通过 JsonResponse
  • 前端用 fetch/Axios 调用
  • 实现真正的前后端分离

这样你既能写页面,又能搞定数据,成为“综合型”开发者,在求职或内部转岗时更有优势。


结语

我当初就是靠这样一个小小的“Hello World”网站,打开了后端的大门。后来虽然主要做前端,但因为懂后端,和后端同事沟通顺畅多了,甚至能自己搭工具给运营团队用(比如自动生成报表的内部系统)。

技术没有高低贵贱,能解决问题的就是好技术。Django 不是最酷的,但对新手极其友好。希望这篇教程能帮你少走弯路,早日做出属于自己的网站!

最后提醒:动手!动手!动手! 看十遍不如敲一遍。现在就打开终端,输入 django-admin startproject ... 吧!

祝你 coding happy!🚀

评论 0

最热最新
暂无评论
指针迷路了Lv.1
0
影响力
0
文章
0
粉丝