一杯茶的时间,上手 Django 框架开发

在这里插入图片描述
Django 是 Python 社区的两大最受欢迎的 Web 框架之一(另一个是 Flask)。凭借功能强大的脚手架和诸多开箱即用的组件,用 Django 搭建 Web 应用快速而又省力。然而,也正是因为过于强大,想要驾驭它需要花费不少的力气。本文将通过实现一个新闻发布网站带你快速熟悉 Django 框架,让你能够骑上这匹快马,在 Web 开发的战场上尽情驰骋。

起步

Django 由 Adrian Holovaty 和 Simon Willison 在 2003 年的秋天写成,并在 2005 年正式发布。他们俩当时为一个新闻报社制作网站,对快速开发有着比较高的需求,并且希望能够在开发的同时也能够让非技术人员为网站添加内容。于是这也使得 Django 具备了两项鲜明的特点:

  • 高度强调可复用性可插拔性,内置大量现成的成熟组件,开发效率极高
  • 自带与数据库联动的后台管理系统,能够在开发的同时创建内容

Django 的名字取自吉他手 Django Reinhardt,发音为 JANG-goh(谐音“尖狗”),但实际上 Django 的吉祥物是一只长着翅膀的小马。

在这篇教程中,我们也将向 Django 的起源致敬——手把手带你开发一个新闻发布网站,并且可以从后台管理系统中添加新闻,展示到网站首页上。

预备知识

本教程假定你已经知道了:

  • 基本的 Python 3 语言知识,包括使用 pip 安装包
  • 了解 HTTP 协议基础知识,浏览器和服务器之间是如何互动的

学习目标

读完这篇教程后,你将掌握 Django MTV 框架的精髓:

  • M(Model):创建数据模型,并执行数据库迁移
  • T(Template):写出基本的 Django 模板,并从视图中传入数据
  • V(View):在视图中访问数据库,实现业务逻辑,渲染模板,并接入路由表

虽然 Django 还有很多知识点,但是理解了 MTV,后面的知识点学习起来也就轻松多啦。

安装 Django 并启用脚手架

本文假定你已经安装好了 Python 3 和 pip,那么可以直接用 pip 安装 Django:

pip install django

直接用 pip 在全局安装 Django 的确不是一个很好的做法,用虚拟环境更符合最佳实践。为了减少初学者们的认知负担,在这里就简化了安装过程。熟悉 pipenv 等虚拟环境工具的老司机当然可以自行使用哈。

安装好 Django 后,我们用 Django 自带的脚手架工具 django-admin 创建项目:

django-admin startproject django_news
cd django_news

生成的项目骨架及每个文件的作用如下所示:

django_news
├── django_news              // 项目全局文件目录
│   ├── __init__.py
│   ├── settings.py          // 全局配置
│   ├── urls.py              // 全局路由
│   └── wsgi.py              // WSGI服务接口(暂时不用纠结这个是神马)
└── manage.py                // 项目管理脚本

我们使用 manage.py 来运行开发服务器(Development Server):

python manage.py runserver

提示

细心的你会发现出现了一行鲜红色的提示:You have 17 unapplied migration(s)…(省略 n 个字符)。不用担心,我们会在接下来的步骤中详细讲解来龙去脉。

按照提示,我们通过浏览器访问 localhost:8000,可以看到欢迎界面:

提示

Django 开发服务器可以保持开启,并且后面修改代码会自动重新加载,非常方便。后面运行其他命令时,再打开一个终端(命令行)即可。

一切准备就绪,缰绳已在你手中!

创建第一个自定义 Django App

在上一节中我们讲到,Django 是一个高度模块化的框架。具体而言,一个 Django 应用由多个子应用组成,我们一般称之为 App(注意不是我们常说的移动应用 APP,而是 Application 的简写),如下图所示。

Django App 的类别

Django App 一般分为三大类(根据来源):

  • 内置:即 Django 框架自带的应用,包括 admin(后台管理)、auth(身份鉴权)、sessions(会话管理)等等
  • 自定义:即用来实现我们自身业务逻辑的应用,这里我们将创建一个新闻展示应用
  • 第三方:即社区提供的应用,数量极其丰富,功能涵盖几乎所有方面,能够大大减少开发成本

所有的 Django 应用都在 django_news/settings.py 的 INSTALLED_APPS 列表中定义:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

实现自定义 App

话不多说,让我们来创建第一个自定义 App,名称为 news:

python manage.py startapp news

生成的 news 应用文件夹结构如下所示:

news                     // news 应用目录
├── __init__.py          // 初始化模块
├── admin.py             // 后台管理配置
├── apps.py              // 应用配置
├── migrations           // 数据库迁移文件目录
│   └── __init__.py      // 数据库迁移初始化模块
├── models.py            // 数据模型
├── tests.py             // 单元测试
└── views.py             // 视图

这个子目录里面乍一看好多文件啊!这是因为 Django 始终坚持解耦的原则——尽量减少代码之间的耦合,把不相关的代码拆成多个模块,让同一个模块具有内聚性。相信我,等到后面慢慢熟悉之后,你会对每一个模块都了如指掌的。

实际上,每个 Django App 的组织结构符合 Django 的 MTV 法则——Model(模型)+ Template(模板)+ View(视图)。MTV 与大家比较熟悉的 MVC 在思想上非常相似,但是命名有比较大的出入,如下表所示:

大家熟知的 View,在 Django 里面代表的是业务逻辑,也就是 MVC 中的控制器哦!

将自定义 App 添加到全局配置

最后,我们在 settings.py 中将 news 应用加入 INSTALLED_APPS 中:

# ...

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth'
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值