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

内存泄漏君
2025-06-28 19:16
阅读 774

开篇:Django是什么?能用来做什么?

开篇:Django是什么?能用来做什么?

Django 是一个用 Python 编写的后端 Web 框架,它的主要作用是帮助开发者快速构建安全、稳定的动态网站。你可以把 Django 想象成一个“搭积木”的工具箱,里面已经为你准备好了很多常用功能(比如用户登录系统、数据库管理等),你只需要按照自己的需求把这些积木组合起来就可以了。

常见的使用场景包括:

  • 博客系统
  • 电商平台
  • 在线教育平台
  • 内容管理系统(CMS)
  • 管理后台开发

我们今天的目标就是使用 Django 创建一个简单的博客网站,让你快速上手!


环境准备:安装 Python 和 Django

环境准备:安装 Python 和 Django

在开始写代码之前,我们需要准备好开发环境。以下是详细步骤:

步骤1:安装 Python

Django 基于 Python 运行,所以首先需要确保你的电脑上已经安装了 Python。推荐使用 Python 3.8~3.12 版本。

打开终端或命令提示符,输入以下命令查看是否已安装 Python:

python --version

如果你看到类似 Python 3.10.4 的输出,说明已经安装了 Python。

如果没有,请前往官网下载安装包:https://www.python.org/downloads/
安装时记得勾选 "Add to PATH"


步骤2:安装 Django

在确认 Python 安装成功后,我们可以使用 pip 来安装 Django:

pip install django

等待安装完成后,可以运行下面的命令验证是否安装成功:

django-admin --version

如果输出版本号(例如 4.2.5),说明安装成功!


步骤3:创建项目目录

建议为每个项目建立独立的文件夹,便于管理。例如我们在桌面上新建一个文件夹:

mkdir mysite
cd mysite

接下来我们将在这个目录下创建我们的第一个 Django 项目。


核心概念:什么是 MVC?什么是 MTV?

核心概念:什么是 MVC?什么是 MTV?

在学习 Django 之前,先了解几个基本概念,有助于理解整个框架的工作方式。

1. MVC vs MTV

你可能会听说过 MVC(Model-View-Controller)模式,它是一种经典的软件架构设计方式。Django 使用的是类似的 MTV(Model-Template-View) 模式:

英文缩写 含义 职责
Model 数据模型 负责与数据库交互
View 视图(对应传统 MVC 中的 Controller) 处理请求并返回响应
Template 模板 负责页面的显示结构和样式

简单来说:

  • Model = 数据层(表结构)
  • View = 逻辑层(业务处理)
  • Template = 展示层(HTML 页面)

2. Django 的核心组件

组件名 功能描述
Project 整个项目的大容器,包含多个 App
App 功能模块,比如博客、论坛、用户系统等
ORM 对接数据库的语言,让操作数据库像操作对象一样方便
URL Router 把浏览器访问的 URL 映射到对应的视图函数
Admin 自带的后台管理系统

我们将在实战中一一讲解这些内容。


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

现在我们进入正式开发阶段,一步步创建一个简单的博客网站。


第一步:创建项目

在之前创建的 mysite 目录中,执行以下命令创建 Django 项目:

django-admin startproject blogsite

执行完毕后,会生成如下结构的文件夹:

blogsite/
├── manage.py
└── blogsite/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • manage.py:项目管理脚本,可以运行服务器、创建 App 等
  • settings.py:配置文件,用于设置数据库、模板路径、静态资源等
  • urls.py:URL 配置,告诉 Django 怎么处理浏览器请求

第二步:启动开发服务器

进入项目目录:

cd blogsite

运行开发服务器:

python manage.py runserver

你会看到类似如下的输出:

Performing system checks...

System check identified no issues (0 silenced).
October 26, 2024 - 15:50:53
Django version 4.2.5, using settings 'blogsite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

现在打开浏览器访问:http://localhost:8000,你应该可以看到 Django 的欢迎页面!

📌新手小贴士:如果提示 “Port 8000 is in use”,可以在运行时换端口:

python manage.py runserver 8080

第三步:创建第一个 App

Django 推荐将不同功能拆分为不同的 App。我们来创建一个名为 blog 的 App:

python manage.py startapp blog

创建完后,目录结构变成这样:

blogsite/
├── blog/          <-- 新增的 App
│   ├── migrations/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── blogsite/
    └── ...

为了让 Django 认识这个新 App,需要去 settings.py 文件的 INSTALLED_APPS 列表中添加它:

微服务架构示意图-2

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  # 添加这行
]

保存后重启服务器即可生效。


第四步:创建视图函数

现在我们要在 blog 这个 App 中定义一个网页内容。打开 blog/views.py 文件,添加如下内容:

from django.http import HttpResponse

def index(request):
    return HttpResponse("这是我的第一个博客页面!")

然后在 blogsite/urls.py 中绑定这个视图到某个网址:

from django.urls import path
from blog import views  # 导入视图模块

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),  # 访问根路径时触发 index 函数
]

现在再次访问 http://localhost:8000,你应该会看到页面上显示:

这是我的第一个博客页面!

第五步:创建模板页面(Template)

我们不想每次都返回纯文本,而是想要好看的网页。这时候就需要用到模板系统。

首先,在 blog 文件夹中新建 templates/blog/ 目录,并在里面新建一个 HTML 文件:

<!-- blog/templates/blog/index.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>我的博客</title>
</head>
<body>
    <h1>欢迎来到我的博客主页!</h1>
    <p>这是使用 Django 搭建的第一个页面。</p>
</body>
</html>

修改 views.py,让它渲染模板而不是返回字符串:

from django.shortcuts import render

def index(request):
    return render(request, 'blog/index.html')

刷新网页,你现在应该看到了一个新的 HTML 页面!


第六步:创建数据模型(Model)

现在我们来实现一个博客文章列表。

编辑 blog/models.py,添加一个文章模型:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)        # 标题
    content = models.TextField()                    # 内容
    created_at = models.DateTimeField(auto_now_add=True)  # 创建时间

    def __str__(self):
        return self.title

接着,我们需要同步数据库:

python manage.py makemigrations
python manage.py migrate

第七步:注册模型到 Admin 后台

Django 提供了一个强大的后台管理系统。打开 blog/admin.py,注册我们的模型:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

现在再运行服务器,并访问 http://localhost:8000/admin

你需要先创建管理员账号:

python manage.py createsuperuser

按照提示填写用户名、邮箱和密码,登录后就可以在后台新增文章了!


第八步:展示文章列表

我们现在来更新模板,让它展示所有文章。

修改 views.py

from django.shortcuts import render
from .models import Post

def index(request):
    posts = Post.objects.all().order_by('-created_at')  # 获取全部文章,按时间倒序排序
    return render(request, 'blog/index.html', {'posts': posts})

更新模板文件 blog/templates/blog/index.html

<h1>我的博客</h1>

{% for post in posts %}
    <div style="margin-bottom: 20px;">
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
        <small>{{ post.created_at }}</small>
    </div>
{% empty %}
    <p>还没有任何文章。</p>
{% endfor %}

刷新页面,你会看到从数据库读取的文章内容!


常见问题解答(FAQ)

Q1:运行时提示“No module named django”

可能是没有正确安装 Django。请运行:

pip install django

或者使用正确的虚拟环境。


Q2:找不到 templates 文件夹

Django 默认会在 App 的 templates 目录中查找模板文件。确保文件夹名称和路径正确。


Q3:为什么我改了模板但页面没变化?

可能是浏览器缓存。尝试强制刷新页面(Ctrl + F5 或 Cmd + Shift + R)。


Q4:修改了模型后如何更新数据库?

每次修改模型后都要运行两个命令:

python manage.py makemigrations
python manage.py migrate

Q5:为什么无法访问 admin 后台?

检查是否注册了模型;检查是否创建了超级用户账户;检查 urls.py 是否引入了 admin。


学习建议:下一步怎么学?

恭喜你完成了第一个 Django 项目!这只是万里长征第一步,接下来你可以继续深入以下几个方向:

推荐学习路线图:

第一阶段:进阶知识

  • 表单处理(Form)
  • 用户认证(登录/注册)
  • 分页与搜索功能
  • REST API 构建(配合 Django REST Framework)

第二阶段:工程化

  • 使用 Bootstrap 美化前端
  • 搭配 Vue.js 或 React 构建前后端分离项目
  • 使用 PostgreSQL 替代 SQLite
  • 部署上线(Nginx + Gunicorn)

第三阶段:实战项目

  • 开发个人博客完整版
  • 实现电商网站
  • 制作 CMS 内容管理系统
  • 搭建在线课程平台

结语:持续练习是掌握 Django 的关键

数据库设计模型-1

Django 不仅是技术框架,更是一种组织项目的方式。随着不断实践,你会发现它极大的提升了开发效率。记住一句话:

“编程不是背知识点,而是通过一次次动手解决问题积累经验。”

希望这篇教程成为你进入 Django 世界的第一盏灯💡。坚持写代码,你一定能成为一名优秀的开发者!

评论 0

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