百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

自从学了 Flask,我就铁了心转向了 Django

wptr33 2025-04-24 09:19 23 浏览

编程派”,选择设为“

优质文章,第一时间送达!

大概是 2015年的冬春之交吧,那时候还在华南师范大学的网络中心混日子。

因为工作的空余时间比较多,所以就学起了 Python 。

虽然很多人最开始是通过爬虫了解和关注到的我,但我最开始,学的是 Web。

那时候有关 Python Web 的资料还是很少的,关于 Web 的书籍就少之又少了。

主流的两大框架:Flask 和 Django。

不食人间烟火的大佬框架:Tornado。

作者自杀了的轻量级框架:WebPy。

小众的小型框架:Bottle。

网上一搜,发现《Flask Web开发:基于Python的Web应用开发实战》这本书评价还不错,然后去图书馆找了下,正好在馆,那就它了。

开局还算顺利,第一章、第二章……一边看书,一边敲代码,介绍的内容基本都能实现,一个 Web 页面基本的请求和响应算是了解了。

到了第3章,需要使用到模板来渲染 HTML。这本书使用的是 Jinja 库的实现(这也是除了 Django 以外,大部分 Python Web 框架所采用的模板渲染库),然后就开始了漫漫的安装第三方库之路。

可能是书的编写时间有点久远的原因,总感觉有那么点不对劲,不能百分百地还原书中介绍的内容,但是还是持续地走了下去。

这一走就走到数据库章节,要想在网站中使用数据库,您还得再安装一个 ORM 库,用来映射数据库表,这本书采用的是 SQLAlchemy,这还是除了 Django 以外,大部分 Python Web 框架所采用的 ORM 库。

然后还有一个兼容 Flask 的库 Flask-SQLAlchemy,因为书中介绍的版本与最新的版本使用上有一些差异,又花了一些时间,来研究这个库的版本差异。

总算搞定了,还能接着往下走。虽然还能走,但总是磕磕绊绊的。

走过了认证,安装了 flask-login;走过了邮件,安装了 Flask-Mail;走过了本地化日期,安装了 Flask-Moment……

每安装一个库,就得去找一个这个库的说明文档,然后学习这个库……感觉自己越走越远,终于,在「蓝图」上,绊倒了。

一倒不起,书没看完。

放弃了。

弃了,整个脑袋都清净了。不用再在各个模块之间来回周转。

再轻量级我也不想用它了,它是轻量了,这一堆第三方库安装下来,我是重起来了。

Flask 不适合自己,那就试试 Django 吧。

虽然没有书籍,但是官方文档足够全面;虽然没有中文文档,但是配合浏览器翻译,也能比 Flask的小狗书阅读得更流畅。

跟着「快速入门」,迅速搭建好了一个 Web 应用:

要引入啥,一个 import 直接搞定;要看啥功能的实现和使用,一个文档直接解决:

要想扩展啥功能,先看看Django提供了没有,提供了拿来即用:

香!简直太香了!

网络上的大佬们说 Flask 轻量好扩展,反正我只感觉到了它的轻巧,给我带来了沉重的负担;

网络上的大佬们说 Django 太重了,反正我只感觉到它给我带来的便利性,让我专注于业务功能的实现带来了便利。

这就像是一个「准系统」和「台式机」的区别:

准系统是轻量级了,想要啥配置都可以自己选配自己安装,就像 Flask 需要啥扩展功能,都需要自己找第三方库安装实现,或者自己编写实现。

台式机则是拿来即用,如果哪天性能不行了,想提升配置了,那就打开机箱,换主板、换内存、换硬盘吧。

它「轻」由它「轻」,我「香」是真香。

你使用的是 Flask 还是 Django?欢迎留言讨论~

---

这里推荐《Django 3 by Example》这本书,由 14 年以上开发经验的技术专家撰写,面向 Django 最新版本,书中介绍了多个实战项目的全过程,对于零基础学习了解 Django 来说非常适合。


我目前正在组织本书的共读营,还刚刚开始没多久,如果你也想系统学习 Django,不如一起加入吧~现在加入,即可享公众号读者特别优惠~~




作者:州的先生

来源公众号:州的先生

相关推荐

高性能并发队列Disruptor使用详解

基本概念Disruptor是一个高性能的异步处理框架,是一个轻量的Java消息服务JMS,能够在无锁的情况下实现队列的并发操作Disruptor使用环形数组实现了类似队列的功能,并且是一个有界队列....

Disruptor一个高性能队列_java高性能队列

Disruptor一个高性能队列前言说到队列比较熟悉的可能是ArrayBlockingQueue、LinkedBlockingQueue这两个有界队列,大多应用在线程池中使用能保证线程安全,但其安全性...

谈谈防御性编程_防御性策略

防御性编程对于程序员来说是一种良好的代码习惯,是为了保护自己的程序在不可未知的异常下,避免带来更大的破坏性崩溃,使得程序在错误发生时,依然能够云淡风轻的处理,但很多程序员入行很多年,写出的代码依然都是...

有人敲门,开水开了,电话响了,孩子哭了,你先顾谁?

前言哎呀,这种情况你肯定遇到过吧!正在家里忙活着,突然——咚咚咚有人敲门,咕噜咕噜开水开了,铃铃铃电话响了,哇哇哇孩子又哭了...我去,四件事一起来,人都懵了!你说先搞哪个?其实这跟我们写Java多线...

面试官:线程池如何按照core、max、queue的执行顺序去执行?

前言这是一个真实的面试题。前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core、max、queue的执行循序去执行?"。我们都知道线程池中代码执行顺序是:co...

深入剖析 Java 中线程池的多种实现方式

在当今高度并发的互联网软件开发领域,高效地管理和利用线程资源是提升程序性能的关键。Java作为一种广泛应用于后端开发的编程语言,为我们提供了丰富的线程池实现方式。今天,就让我们深入探讨Java中...

并发编程之《彻底搞懂Java线程》_java多线程并发解决方案详解

目录引言一、核心概念:线程是什么?...

Redis怎么实现延时消息_redis实现延时任务

一句话总结Redis可通过有序集合(ZSET)实现延时消息:将消息作为value,到期时间戳作为score存入ZSET。消费者轮询用ZRANGEBYSCORE获取到期消息,配合Lua脚本保证原子性获取...

CompletableFuture真的用对了吗?盘点它最容易被误用的5个场景

在Java并发编程中,CompletableFuture是处理异步任务的利器,但不少开发者在使用时踩过这些坑——线上服务突然雪崩、异常悄无声息消失、接口响应时间翻倍……本文结合真实案例,拆解5个最容易...

接口性能优化技巧,有点硬_接口性能瓶颈

背景我负责的系统到2021年初完成了功能上的建设,开始进入到推广阶段。随着推广的逐步深入,收到了很多好评的同时也收到了很多对性能的吐槽。刚刚收到吐槽的时候,我们的心情是这样的:...

禁止使用这5个Java类,每一个背后都有一段"血泪史"

某电商平台的支付系统突然报警:大量订单状态异常。排查日志发现,同一笔订单被重复支付了三次。事后复盘显示,罪魁祸首竟是一行看似无害的SimpleDateFormat代码。在Java开发中,这类因使用不安...

无锁队列Disruptor原理解析_无锁队列实现原理

队列比较队列...

Java并发队列与容器_java 并发队列

【前言:无论是大数据从业人员还是Java从业人员,掌握Java高并发和多线程是必备技能之一。本文主要阐述Java并发包下的阻塞队列和并发容器,其实研读过大数据相关技术如Spark、Storm等源码的,...

线程池工具及拒绝策略的使用_线程池处理策略

线程池的拒绝策略若线程池中的核心线程数被用完且阻塞队列已排满,则此时线程池的资源已耗尽,线程池将没有足够的线程资源执行新的任务。为了保证操作系统的安全,线程池将通过拒绝策略处理新添加的线程任务。...

【面试题精讲】ArrayBlockingQueue 和 LinkedBlockingQueue 区别?

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准...