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

代码收藏夹
2025-06-20 15:34
阅读 292

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

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

你是否想过,用 Python 写一个属于自己的网站?如果这个问题让你感到陌生或好奇,那恭喜你,这篇文章将为你打开一扇新的大门。今天我们要介绍的是 Django——一个用 Python 编写的强大且易于上手的 Web开发框架

那么问题来了,什么是 Web 框架呢?简单来说,它是帮你快速构建网站的工具包。就像盖房子需要砖头、水泥、钢筋一样,Web框架为我们提供了网页开发中常用的功能模块,比如处理用户请求、连接数据库、管理页面路由等。有了它,你就不用重复造轮子了,专注做自己感兴趣的部分。

Django 最大的特点是「开箱即用」,这意味着它自带了许多功能(例如后台管理系统、用户认证、表单验证等),非常适合快速开发复杂的网站项目。很多知名网站,如 Instagram 和 Pinterest,都是基于 Django 构建的。

在本教程中,我们将从零开始,一步步带你搭建一个简单的 Django 网站。即使你是编程新手,也不用担心,我们会把每个知识点都讲得通俗易懂,并配有实际操作的代码示例,让你边学边动手,轻松迈出 Web 开发的第一步。


环境准备:搭建你的 Django 开发环境

环境准备:搭建你的 Django 开发环境

在正式编写代码之前,我们需要先准备好运行 Django 的开发环境。不用担心,这个过程并不复杂,我们只需要安装几个关键的软件和库。

第一步:安装 Python

Django 是基于 Python 的,所以第一步就是确保你的电脑上已经安装了 Python。你可以访问 Python 官网 下载并安装最新版本的 Python(建议使用 3.8 或更新的版本)。

安装完成后,在命令行中输入以下命令检查是否安装成功:

python --version

或者如果你使用的是 Linux/macOS 系统,可能是:

python3 --version

你会看到类似这样的输出:

Python 3.11.5

如果没有显示版本号,请重新检查安装步骤。

第二步:创建虚拟环境

为了防止不同项目之间出现依赖冲突,推荐大家使用 Python 的虚拟环境来隔离项目依赖。

在终端或命令行中进入你要存放项目的文件夹,并运行以下命令:

python -m venv myenv

这会创建一个名为 myenv 的虚拟环境文件夹。接下来激活它:

  • Windows 系统:
    myenv\Scripts\activate.bat
    
  • macOS/Linux 系统:
    source myenv/bin/activate
    

激活后,命令行前会显示 (myenv),表示你现在处于虚拟环境中。

第三步:安装 Django

现在我们可以安装 Django 了。在激活虚拟环境的前提下,运行:

pip install django

等待安装完成后,可以通过以下命令查看 Django 是否安装成功:

django-admin --version

如果能看到类似这样的输出:

4.2.5

说明你已经成功安装了 Django!

第四步:创建你的第一个 Django 项目

终于到了激动人心的一步!让我们用 Django 创建一个项目骨架。

在命令行中执行:

django-admin startproject mysite

这条命令会在当前目录下生成一个名为 mysite 的文件夹,里面包含了一些基本的 Django 配置文件。你可以进入该文件夹:

cd mysite

然后运行以下命令启动本地开发服务器:

python manage.py runserver

你会看到类似于下面的输出:

Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

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

这就是你的第一个 Django 网站雏形!


核心概念:Django 中的三大基石

核心概念:Django 中的三大基石

在继续深入之前,我们先来了解 Django 的三个核心组成部分。它们分别是:

1. 模型(Model)

想象一下你在经营一个图书馆,你会怎么管理书的信息呢?比如每本书的名字、作者、出版日期等等。这时候我们就需要用到“模型”这个概念。

模型本质上是对数据库结构的描述,它告诉 Django 数据应该以什么样的方式存储。你不需要直接写 SQL 语句,Django 会自动帮你生成数据库表结构。

举个例子,我们来定义一个“书”的模型:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    published_date = models.DateField()

    def __str__(self):
        return self.title

这里我们创建了一个叫 Book 的类,它有三个字段:标题、作者和出版日期。这些数据会自动保存到数据库里。

2. 视图(View)

视图负责接收用户的请求,并返回相应的结果(通常是 HTML 页面)。你可以把它理解成一个“动作处理器”。

例如,当用户访问 /books 这个网址时,我们需要展示所有书籍的信息。这时就要在视图中编写逻辑来获取数据库中的书本数据,并渲染成网页返回给用户。

下面是一个简单的视图例子:

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'books/list.html', {'books': books})

这个函数叫做 book_list,它的作用是:

  • 查询所有的书;
  • 使用模板引擎(后面会讲)把数据插入到 HTML 模板中;
  • 返回最终的网页给用户。

3. 模板(Template)

模板的作用是美化网页内容。你可能听过 HTML,它是一种标记语言,用于构建网页的结构。Django 使用一种特殊的模板语法,可以很方便地把动态数据插入到 HTML 中。

比如我们想在网页上列出所有书籍信息,我们可以创建一个叫 list.html 的模板文件:

<!DOCTYPE html>
<html>
<head><title>图书列表</title></head>
<body>
    <h1>图书列表</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} - {{ book.author }}</li>
        {% endfor %}
    </ul>
</body>
</html>

系统架构设计图-1

这段代码看起来像 HTML,但其中的 {% %}{{ }} 是 Django 模板特有的语法,分别用于控制流程(比如循环)和显示变量内容。

以上就是 Django 的核心三要素:模型(管理数据)、视图(处理逻辑)和模板(呈现界面)。它们共同构成了 MVC(Model-View-Controller)架构,是现代 Web 开发的基础结构。

掌握了这三个部分,你就能开始构建自己的网站啦!


实战项目:一步步完成你的第一个 Django 网站

负载均衡配置-2

现在,我们通过一个完整的实战项目来巩固前面的知识。我们将创建一个简易的“博客系统”,实现文章发布和浏览功能。

第一步:创建 App

Django 将不同的功能模块称为“App”。一个项目可以包含多个 App,每个 App 负责一部分功能。

我们在项目根目录(mysite)运行如下命令来创建一个名为 blog 的 App:

python manage.py startapp blog

接下来,需要把这个 App 添加进项目配置中。打开 mysite/settings.py 文件,找到 INSTALLED_APPS,在里面加上 'blog'

INSTALLED_APPS = [
    ...
    'blog',
]

第二步:设计模型(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

这里我们定义了一个 Post 类,有三个字段:

  • title: 标题(最大长度 200 字符)
  • content: 正文(文本类型)
  • created_at: 创建时间(自动记录)

保存后,在命令行中运行:

python manage.py makemigrations
python manage.py migrate

这两个命令会根据你定义的模型自动生成数据库表结构。

第三步:创建视图(View)

我们现在要写一个视图函数,让访问者能够看到所有的博客文章。

编辑 blog/views.py

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

这个函数从数据库中取出所有文章,并按时间倒序排列。

第四步:配置 URL 路由

为了让用户能访问我们的视图,还需要设置 URL 路径。

blog 文件夹中新建一个 urls.py 文件,内容如下:

from django.urls import path
from . import views

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

然后回到项目主目录的 mysite/urls.py,添加对 blog app 的引用:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

现在访问 http://127.0.0.1:8000/blog 应该会出现错误提示,因为还没有模板。

第五步:创建模板

我们需要创建一个 HTML 页面来展示文章列表。在项目根目录中创建文件夹结构如下:

templates/blog/post_list.html

然后在该文件中写入以下 HTML 代码:

<!DOCTYPE html>
<html>
<head><title>我的博客</title></head>
<body>
    <h1>欢迎来到我的博客</h1>
    <ul>
        {% for post in posts %}
            <li>
                <h2>{{ post.title }}</h2>
                <p>{{ post.content|truncatewords:30 }}</p>
                <small>{{ post.created_at }}</small>
                <hr />
            </li>
        {% empty %}
            <li>暂无文章</li>
        {% endfor %}
    </ul>
</body>
</html>

别忘了告诉 Django 模板的位置。修改 settings.py 中的 TEMPLATES 设置:

'DIRS': [BASE_DIR / 'templates'],

再次运行服务器:

python manage.py runserver

访问 http://127.0.0.1:8000/blog,你应该能看到页面,但目前没有文章。我们可以手动添加一些测试数据。

第六步:使用后台管理功能添加数据

Django 自带一个强大的后台管理系统。我们先注册我们的模型。

打开 blog/admin.py 文件:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

然后创建管理员账号:

python manage.py createsuperuser

输入用户名、邮箱和密码后,访问 http://127.0.0.1:8000/admin,登录后点击 “Posts > Add” 创建几篇文章。刷新页面即可看到刚刚添加的文章!

至此,你的第一个 Django 博客网站就完成了!🎉


新手常见问题及解答

在学习过程中,初学者常常会遇到各种各样的问题。以下是几个常见的问题及其解决方案:

Q1:Django 报错 "No module named 'django'" 是怎么回事?

A1:说明 Django 没有正确安装,或者你没有激活虚拟环境。请按照前面提到的方法重新安装 Django,并确认是否已激活虚拟环境。


Q2:运行 runserver 时报错 "You have unapplied migrations" 怎么办?

A2:这是因为你创建了模型但还没应用迁移文件。解决方法是在命令行中运行:

python manage.py makemigrations
python manage.py migrate

Q3:模板文件找不到,如何定位问题?

A3:检查以下几个方面:

  1. 模板路径是否写正确;
  2. settings.pyTEMPLATES['DIRS'] 是否指向正确的文件夹;
  3. 模板文件名称是否和 render() 函数中的参数一致;
  4. 是否重启了服务(有时候改动不会自动生效);

Q4:页面显示为空,没有任何内容?

A4:很可能是数据库中没有数据。尝试用后台管理功能添加一条数据,或者在视图中打印数据进行调试:

print(posts)  # 在视图中加一句打印语句

Q5:为什么访问不到我设定的网址?

A5:确认 URL 配置是否正确:

  • App 的 urls.py 是否正确挂载?
  • 主项目的 urls.py 是否正确引入了子 URL?
  • 是否有拼写错误?
  • 有没有忘记重启服务器?

Q6:Django 启动后报错“Port 8000 is already in use”

A6:这是端口被占用导致的。可以用下面的命令换一个端口运行服务器:

python manage.py runserver 8080

访问 http://127.0.0.1:8080 即可。


学习建议:下一步该学什么?

恭喜你完成了第一个 Django 项目!接下来你可以沿着以下几个方向继续学习:

1. 更深入地了解 Django 的各个组件

  • 表单处理(Form):学习如何让用户提交信息;
  • 用户认证(User Authentication):实现登录、注册、权限管理等功能;
  • REST API 接口:使用 Django REST Framework 构建前后端分离的接口;
  • 中间件(Middleware):了解 Django 请求处理流程;
  • 静态文件与媒体文件管理;
  • 消息框架(Messages Framework);

2. 提升前端技能

  • HTML/CSS 基础;
  • JavaScript 简介;
  • Bootstrap 快速布局;
  • Django 模板继承和静态资源管理;

3. 部署上线

  • 学习使用 Gunicorn + Nginx 部署生产环境;
  • 使用 SQLite 到 PostgreSQL 的迁移;
  • 了解域名绑定和 HTTPS 配置;

4. 拓展项目实战

  • 构建个人博客增强版(添加分类、评论功能);
  • 开发论坛或问答系统;
  • 实现电商购物车系统;
  • 学习 Django Channels 实现实时通信;

5. 阅读官方文档与社区资源

随着你掌握越来越多的知识,你会发现 Django 不仅是学习 Web 开发的好起点,也是一把真正能够“造大船”的利器。坚持下去,很快你就能独立开发属于自己的完整网站了!


希望这篇教程能帮助你顺利入门 Django。记住,学习编程最重要的是多动手实践,不要害怕犯错。每一次调试、每一次报错,都是通向高手之路的重要一步。加油!🌟

评论 0

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