标签 [Python]

14
Flask 基于子域名的蓝图管理
在 Flask 中,蓝图(Blueprint)通常是基于路径进行分派的,因此我们看到典型的注册代码一般类似这样: app.register_blueprint(home_bp, url_prefix='...') 相对少见的另一种用法是,Blueprint 也可以通过子域名来分派,这涉及到程序结构上会有一些改变,同时也会带来一些新的问题(当然都是可以解决的)。使用子域名是大型网站的常规做法,同时也使得 URL 路径更有针对性,比如提供一个 https://api.mydomain.com/... 比起所有页面都堆到 https://mydomain.com/ 下面,看上去也显得更专业一些。我自己也在尝试通过这种方式重构自己的网站,最开始尝试的是每个域名使用一个单独的 app 去管理,但很快发现如果一些比较小的功能也做成独立的网站,会带来比较多额外的管理负担。因此,把这些功能合并到一个app,对外又能通过子域名公开,是不错的做法。因此,我对这种实现做了一些尝试,并对遇到的问题和解决办法做一个记录,以供自己和其他朋友参考。
PyInstaller 系列 - Hook 机制
在本系列前面的文章中,我们已经提到过 PyInstaller 的 Hook,不过尚未详细说明它是怎么回事。本文就将介绍关于 Hook 的知识。 注意,本文讲述的内容属于比较高级的部分,一般用户可以如果没有问题的话,可以不用特意去关心它。但是在如果发生下列情况之一,你可能还是需要对 Hook 有点基本的了解:
PyInstaller 系列 - 规格文件
在本系列的 基本用法 篇中我们曾说过,PyInstaller 在生成文件的同时会创建一个相应的 .spec 文件。其实,.spec 文件才是生成过程的真正核心。它本质上是一个特殊的 Python 脚本,其中记录了生成所需的指令,和包管理所使用的 setup.py 在某种程度上有些相似。当熟悉它的格式以后,你也可以按自己的意愿去修改此文件,并且某些特殊场景下修改 .spec 文件是最简便的方法。本文就讲述 spec 文件的格式、原理和一些常用使用案例。
PyInstaller 系列 - 单目录和单文件模式
在 本文系列前一篇 - 简介 中,我们介绍了 PyInstaller 的入门知识。本文重点讲解一下 PyInstaller 的单目录(onedir)和单文件(onefile) 模式,并解释我个人一直强调的观点:不应该使用单文件模式。
PyInstaller 系列 - 基本用法
这是本系列的第一篇,介绍 PyInstaller 的基础知识。 PyInstaller 是一个跨平台的 Python 应用打包工具,支持 Windows/Linux/MacOS 三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行你的程序。
PyInstaller 系列 - 索引
本文系列介绍 PyInstaller 的使用知识和一些技术性的内幕。 PyInstaller 系列 - 索引 PyInstaller 系列 - 基本用法 PyInstaller 系列 - 单目录和单文件模式 PyInstaller 系列 - 规格文件 PyInstaller 系列 - Hook 机制
PIP 10 问题 "module 'pip' has no attribute 'main'"
最近有不少朋友反映用 PIP 更新包时遇到了问题,典型场景之一是在 PyCharm 中更新软件包,可能遇到如下的出错信息(截屏来自 JetBrains 社区):
用 Django 管理现有数据库
问题 在多数项目中,总有一些几乎一成不变的 CRUD 操作,编写这些代码很无聊,但又是整个系统必不可少的功能之一。我们在上一个项目中也面临类似的问题,虽然已经实现了一个功能相对完整的管理后台,也尽量做到了代码复用,但随着项目规模的增长,需要编写的样本代码也不断膨胀,占用了大量开发时间。
拜拜 Python 2.7
今日新闻: Python 2.7 支持将于 2020 年 1 月 1 日终止 近日,Python语言作者Guido van Rossum在邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。 Python 2.7 最早发布于 2010 年(Python 2.7 Release), 至今已经整整八年历史,抗战都要打完了。Python 2 to 3 的历程,还需要多久?记不清,但肯定有十年以上了吧。年年岁岁花相似,岁岁年年人不同,十年光阴,足够耗尽一代开发者的职业生涯。至今仍有许多库,不再维护,不再升级,永远停留在了 2.x(这也是部分开发者仍然坚持使用 Python2 的理由)。我不知道有任何其他编程语言的版本升级会如此历经磨难。但形势也确实在缓慢地推进:我一直在用的 Django, 从 2.x 起已经只兼容 Python3,其他的主流类库也都在陆续升级,继续使用 Python2 的理由正在变得越来越少。就个人而言,所有项目都已经使用 Python3, 对于旧版本的离去,我只会觉得鼓舞,不会认为可惜。毕竟,整个社区已经因为版本问题分裂得太久,是时候重新走向统一了。
Python 项目可以有多大
.text-right { text-align: right; } 总是看到有人说,动态一时爽,重构火葬场。然而这世界上有的是著名的开源项目, 也有像 Github、Instagram 这样流量巨大的知名网站是基于动态语言开发的,经过了这么多年重构,也未听说哪个作者进了火葬场的,不明白这些人是真的不知道还是装作看不见呢?不过他们说动态语言大到一定程度就无法维护,虽然这话也同样不值一驳,不过也提醒了我,我也很好奇用动态语言开发的项目规模能大到什么程度。
PyCharm 小知识系列 - 索引
PyCharm 小知识系列索引 PyCharm 小知识系列 - 设置(基本概念)
PyCharm 小知识系列 - 设置(基本概念)
很多同学对 PyCharm 设置的直观理解就是打开 Settings 对话框看到的那一大堆东西。这样理解并没有错,但是在“盖子下面”其实并不是一个简单的平面式系统,而是一个层级式的复杂体系,有点类似于 Web 中的层叠样式表(CSS),同时还有其他一些鲜为人知的内容。本文将讲述这些概念和一些特殊的设置用法。
用面向对象方法组织 Flask 应用程序(二)——组织 Blueprint
在 上一篇文章 我说过示例程序中的 Blueprint 存在设计问题,即 Blueprint 和视图函数存在着循环引用。
用面向对象方法组织 Flask 应用程序 (一)
Flask 是著名的 Python Web 微框架,而 《Flask Web 开发——基于 Python 的 Web 应用开发实战》(OReilly出版社出品,以一只大狗作为封面,所以也有人戏称“狗书”)则是这一框架的经典书籍。特别是该书的第七章,描述如何将网站划分为多个模块,很多 Flask 网站都是参照该例子的形式进行规划的。 我的 个人主页 也用了 Flask 框架来开发,网站结构在很大程度上参考了该书的示例。但在开发过程中,我也感觉到该方式也有一些不够合理的地方,主要表现在: