跳至内容
Python

Python 中的 Django Web 开发

了解使用 Django 进行 Web 开发的基础,通过构建具备 CRUD(创建、读取、更新、删除)功能的博客应用。
Olivia Smith
已更新 · 12分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。

Django 是广泛使用的免费、开源且高级的 Web 开发框架。它为开发者提供了大量“开箱即用”的功能,因此开发速度很快。同时,基于它构建的网站也能兼顾安全性、可扩展性和可维护性。

目标

本教程的目标是构建一个博客应用,博客内容可通过管理后台创建和更新。博客内容会显示在页面上,并可按需删除。整个应用提供 CRUD(Create、Read、Update、Delete)功能。

本教程不使用任何前端技术(如 JavaScript、CSS 等),而是专注于每个 Django Web 开发都必需的基础概念。

准备工作

  1. Git Bash: 适用于所有操作系统。所有与 Django 相关的命令和部分 Unix 命令都通过它执行。下载 Git Bash:点此下载。
  2. 文本编辑器: 可使用任意文本编辑器,如 Sublime Text 或 Visual Studio Code。以下项目中使用 Sublime Text。
  3. Python 3: 可在 Download Python 下载最新版本的 Python。

注意: 如果您理解 Python 基础并了解循环、函数、类等,以及具备一些 bash 或命令行知识,便可轻松跟随本教程。

虚拟环境

虚拟环境为与 Python 相关的项目提供依赖隔离。它相当于一个自包含的容器或隔离环境,在其中为某个特定项目安装所有 Python 相关包及其所需版本。由于 Python、Django 或其他包会不断发布新版本,通过虚拟环境,您可以在同一台电脑上针对不同项目使用各自所需的旧版本。总之,您可以在同一电脑上独立开展一个基于 Django 2.0 的项目,同时又独立启动另一个基于 Django 3.0 的项目。

注意: 创建虚拟环境的方法有多种,下面仅展示其中一种。

创建虚拟环境的步骤

  1. 您可以在桌面使用 “mkdir” 命令创建名为 “project-blog” 的新目录。
  2. 使用 “cd” 命令将目录切换到 “project-blog”。
    Steps to Create a Virtual Environment

  3. 使用 “python -m venv env” 创建虚拟环境,其中 env 是我们的虚拟环境,可通过 “ls” 命令看到。
    Steps to Create a Virtual Environment

  4. 激活虚拟环境: 使用 “source” 命令激活虚拟环境,需要启用或激活 “Scripts” 文件夹。
    Steps to Create a Virtual Environment
    成功激活虚拟环境后,父括号中会显示 “env”。

  5. 安装 Django: 使用 “pip install django” 在您的特定虚拟环境中安装 Django。
    Steps to Create a Virtual Environment

注意:Linux 和 Mac 用户需要在命令中明确使用 “python3”,因为其电脑通常已预装 Python 2 版本。此外,建议现在使用 Python 3,因为 Python 自 2020 年后不再支持 2.x 版本。

创建 Django 项目

  1. 第一步是使用 “django-admin startproject project_name” 创建项目,此处的 “project_name” 为 “django_blog”。该命令会在新建项目中生成许多文件,必要时您可以在 Django 文档 中进一步查阅。
    Creating a Django Project
  2. 使用 “cd” 命令切换到新创建的项目目录,用 “ls” 命令查看生成的文件。
    Creating a Django Project
  3. 您可以使用 “python manage.py runserver” 运行项目。
    Creating a Django Project
  4. 可在您常用的浏览器(Google Chrome、Mozilla Firefox 等)中查看项目。在地址栏输入 “localhost:8000” 或 “127.0.0.1:8000”,如下所示。
    Creating a Django Project
    注意: 要显示与上图相同的页面,需要确保 bash 中的服务器在后台运行。您也可以按需手动停止服务器:Windows/Linux 使用 “Ctrl+C”,Mac 使用 “Cmd+C”。

启动新的 Django 项目

在 Django 中创建新项目通常是两步流程,如下所示。

  1. 第一步使用 “python manage.py startapp app_name” 创建应用,此处 app_name 为 “blog”。在 Django 中,一个项目可以包含多个应用,每个应用为该项目提供单一且特定的功能。
    Starting the New Project
  2. 第二步是在 “django_blog/settings.py” 的 INSTALLED_APP 部分进行修改,让项目识别我们新创建的应用。
    Starting the New Project

修改模型

Django 默认使用 “SQLite” 作为数据库,它轻量且适用于小型项目,本项目使用它完全足够。Django 使用 “对象关系映射(ORM)”,使得与数据库交互非常容易。我们不直接编写数据库操作代码,而是通过在 “models.py” 中使用 “class” 关键字来创建数据库表。

在 “blog/models.py” 中,您需要创建一个名为 “Post” 的新模型。该类将随后成为数据库表,当前继承自 “models.Model”。在标准博客中,每篇 “Post” 包含一个标题,对应字段为 CharField。 它是基于文本的列,且必须提供参数 “max_length”,此处为 50。此外还有一个名为 “content” 的字段,为 TextField,用于存放 “Post” 的详细文本内容,符合常见博客的结构。定义了双下划线(str)方法,用于覆盖并返回字段 “title” 的实际名称,而不是某个对象表示。
Changing in our Models

创建迁移

“python manage.py makemigrations” 是第一步,它会在创建后读取 “models.py”。该命令会创建一个名为 “migrations” 的新文件夹,其中有一个名为 “0001_initial.py” 的文件,并且可跨数据库移植。
Changing in our Models

迁移到数据库

第二步使用 “python manage.py migrate”,它会读取新创建的 “migrations” 文件夹并创建数据库,当模型发生变化时也会相应地演进数据库。
Changing in our Models

注册到管理后台

进入 “blog/admin.py”,通过 “from .models import Post” 导入名为 “Post” 的模型。要将模型注册到管理后台,使用命令 “admin.site.register(Post)”。


Changing in our Models

创建超级用户并在管理后台查看

在访问 “admin” 面板之前,您需要创建一个超级用户。使用 “winpty python manage.py createsuperuser”。
Changing in our Models
注意:winpty 是 bash 特定命令,用于与 Windows 控制台程序通信。

在 bash 中使用命令 python manage.py runserver 在后台运行服务器。打开浏览器并在地址栏输入以下内容。

随后填写您之前创建的用户名和密码:
Changing in our Models
之后即可在管理后台看到我们新创建的 “Post” 模型。
Changing in our Models
点击 “Add” 按钮更改 “Post” 的内容。填写信息并 “Save” 保存。
Changing in our Models

修改 views 和 urls

前往 “blog/views.py”,按下图进行修改。添加函数 “blog_list”,它接收请求。通过查询 “Post.objects.all()” 获取所有已创建的对象,并保存到 post。新建一个字典 “context”,将对象作为键传给模板 “blog-list.html”,并通过 render 返回响应。
Changing in views and urls
在 “django_blog/blog” 中新建文件 “urls.py” 并进行如下修改。相对导入视图 “blog_list”,以及一个 “urlpatterns”,它是通往网站特定页面的路径列表。目前,<b'path' 包含空字符串和视图名称。
Changing in views and urls
接着前往 “django_blog/urls.py”,导入 include 并修改 “urlpatterns”。然后通过 include 添加应用的 URL 路径。当用户访问 “posts/” 时,会被导向我们的 “blog.urls”。

创建并修改模板

创建一个 templates 文件夹,通常用来存放 “HTML”,并包含其自有的模板语言 “Jinja2”。按照约定,文件夹路径应为 “templates/blog/blog_list.html”。
Making and Changing the Templates
如下所示,包含与 “超文本标记语言(HTML)” 相关的语法,其中 “h1” 表示大标题,无序列表(ul)包含列表项 li。同时使用了与 “Jinja2” 相关的 “for” 循环语法,从 “blog/views.py” 传来的键 “blog_list” 会被迭代为各元素 “list”。
Making and Changing the Templates
在网页上查看标题为 “First Post” 的内容。
Making and Changing the Templates
从管理后台以同样方式再添加一条信息,将第二篇文章的 title 命名为 “Second Post”。
Making and Changing the Templates
添加信息并刷新首页后,页面会更新显示。
Making and Changing the Templates

每篇文章的详情页

您将为每篇文章创建单独页面,包含文章标题及其内容。该 “url” 为 “localhost:8000/posts/‘id’”,其中 id 表示附加在每篇 “Post” 上的唯一编号或主键,由 Django 自动提供。
在 “blog/view.py” 中创建函数 “blog_detail”,它接受 id 作为参数。同时发起查询以获取指定 id,并保存为 “each_post”。与上文类似,将所需信息作为 context 传给 “blog_detail.html”。
Details for Each Individual post
修改 “blog/urls.py” 中的 url,其中 path 包含 “<id>”,以整型形式接收唯一 id。假设用户仅访问 “posts/” 时,会看到所有文章;当访问 “posts/1” 时,只会看到第一篇创建的文章的信息。
Details for Each Individual post
新建文件 “blog/blog_detail.html” 并进行如下修改。由于 blog_detail 作为 context 传入,可使用点号访问 “title” 和 “content”。
Details for Each Individual post
在浏览器地址栏输入相应 URL 来查看单篇文章。由于第一条信息的 “id” 为 “1”,第二条为 “2”,后续依次递增。
Details for Each Individual post

删除文章

定义 blog_delete,它接收请求和 id。通过查询 “Post.objects.get(id=id)” 获取具有唯一 id 的对象并保存为 each_post。随后调用 “each_post.delete()” 删除该 “Post”。最后从 “django.http” 模块导入 HttpResponseRedirect,用于将页面重定向到 “/posts/”。
Deleting the Post
在 “urls.py” 中导入 “blog_delete”,并将路径设置为 “<id>/delete”,这样在 id 后加上 delete 即可删除对应对象或信息。
Deleting the Post
我们通过在 “urls.py” 中输入如下路径来删除文章。
Deleting the Post
最后,当调用 “posts/1/delete/” 时,页面会重定向到 “/posts”,此时首页仅剩一篇文章。
Deleting the Post

结语

恭喜您完成本教程!您已经学习了 Django Web 开发的基础,并了解了 CRUD 功能。若想在某个具体主题上了解更多,请前往 Django 文档。

参考资料:

Python 中的 Django Web 开发常见问题

什么是 Django?

Django 是一个用 Python 编写的免费开源 Web 框架,遵循模型-模板-视图(MTV)架构模式。其设计旨在帮助开发者尽可能快速地将应用从概念落地到上线。

Django 有哪些特性?

Django 的一些特性包括轻量且模块化的设计、强大的 ORM(对象关系映射)以简化数据库交互,以及对常见 Web 开发任务的内置支持,如用户认证与管理、表单处理和内容管理。

如何开始使用 Django?

要开始使用 Django,您需要在本机安装 Python 和 Django 库。然后可以使用 django-admin startproject 命令创建一个新的 Django 项目,并利用 Django 的内置功能和工具开始构建您的应用。

如何在 Django 中创建数据库?

Django 默认使用随 Python 附带的 SQLite 数据库引擎。您可以在 Django 应用中定义模型并运行 migrate 命令来创建新数据库。这会在数据库中创建用于存储模型数据的必要数据表。

如何在 Django 中创建视图和模板?

在 Django 中,视图是处理 HTTP 请求并返回 HTTP 响应的函数。您可以在 Django 应用中定义接收请求并返回响应的函数来创建视图。模板是包含动态内容占位符的 HTML 文件。您可以使用 Django 的模板语言在模板中插入动态内容,并在视图中进行渲染。

如何部署 Django 应用?

部署 Django 应用有多种方式,取决于您的托管需求和偏好。常见选项包括部署到 Heroku 或 AWS 等云平台、使用 Apache 或 Nginx 等 Web 服务器,或使用 PythonAnywhere、DigitalOcean 等托管服务。

主题
Python

Python 课程

课程

Python 入门

4 小时
7.1M
只需 4 小时就能掌握 Python 数据分析基础知识。 本在线课程将介绍 Python 接口并探索常用包。
查看详情开始课程

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。
查看更多