一个有3年经验的Django工程师正在介绍他目前使用的库
这篇文章是2016年Django Advent Calender的第10天的文章。
你好!我是一名有大约3年经验的工程师,目前正在使用Django。这次我想介绍一下我正在使用的Django相关库,也算是对自己知识的整理。
静态文件分发
django存储库
用于在类似Amazon S3的CDN上分发静态文件的库。虽然一开始Python 3支持不太好,导致出现了一个名为django-storages-redux的分支版本,但目前已支持最新的3.5版本。最近似乎whitenoise也很受欢迎,如果试用下来满意的话,我也考虑转换使用它。
尼奇-压缩机
这是一个能够将多个CSS和JS文件合并成一个文件的库。它还具有将内容内联、剔除换行和注释以减少数据传输量的功能。此外,它还可以与altJS和Sass(SCSS)等编译器结合使用。
简易缩略图
这个库可以生成所谓的“缩略图”。如果用于生成缩略图的原始图像被删除了,那么只有缩略图会被保留,成为无用的垃圾。因此,需要定期使用thumbnail_cleanup命令来清除缩略图。
搜索
Django-Haystack 是一个选项。
https://pypi.python.org/pypi/django-haystack/2.5.1 这个链接是用来提供 Django Haystack 2.5.1的下载的。
我们正在使用它来在 Elasticsearch 上进行位置信息的搜索。
在使用位置信息时,必须要在已安装了 libgeoip 的环境中才能进行搜索。
添加命令以方便开发操作 & 简化常用代码模式
Django 扩展库
这是一个让Django的各种功能更加强大的库,可以满足我们需要的部分。以下命令是我特别喜欢的。
runserver_plusコマンド
エラー発生時にスタックトレースの任意の行でコード実行ができる。
shell_plusコマンド
モデルクラスや from django.conf import settingsなど、よく使うimport文が予め実行された状態でshellが開始される。
Django表单工具
这个库是用来实现类似于常见的联系表单中的「输入」→「确认」→「发送」的动作。它最初是与Django核心一起发布的,但从1.8版起独立出来了。
Django模型实用工具
这个库可以让你简洁地编写常用于模型设计的模式。
当创建只能输入预先设定的值(如”状态”)的字段时,我们经常使用StatusField或Choices类,因为它们比常规的将元组传递给choices属性更简洁。
Django支架
这个库整理了基于类的视图的混入类。
在开始开发之前仔细阅读文档,可以使开发更加轻松。
另外,关于LoginRequiredMixin,自Django1.9起已经有了标准的LoginRequiredMixin,所以最好使用标准的。
Django 调试工具栏
这个库会在浏览器的屏幕右侧显示一个用于调试的工具栏。
它可以帮助您查看日志输出内容和向数据库发送的查询。
此外,还有一个方便的命令debugsqlshell,它可以分析通过Shell操作模型时发送的查询。
The Chinese paraphrased version of “django-haystack-panel” could be “杰氏绣金针-面板” (Jié shì xiù – .
使用django-debug-toolbar的拓展功能,可以对由django-haystack发出的查询进行解析。
REST API 可以在中文中被译为“REST 应用程序编程接口”。
Django REST框架
如果要创建一个提供REST API的Django服务,那么这个库是首选。
由于功能非常强大,所以根据您想构建的内容,最好使用之前介绍过的django-braces库的JSONResponseMixin、JsonRequestResponseMixin和AjaxResponseMixin。
现金
django-fancy-cache 可以用中文化解释为:”Django 精美缓存”
这是一个库,用于在数据更新时清除特定页面缓存,(标准页面缓存出乎意料地不能做到这一点…)
安全
德江哦-轴
这是一个库,如果登录失败超过一定次数,它会将登录页面冻结一段时间。我们引入了这个库来对抗试图通过暴力破解(或反向暴力破解)来窃取账户的机器人。
在冻结期间,它会以WARN级别记录日志,然后通过邮件、Slack等方式进行通知,对于一直重试的IP地址,我们的方针是在防火墙上进行阻止。
Django密码验证
在密码注册和更新时,可以强制使用相当复杂的密码。这是在Django1.9中引入的密码验证功能,在1.8之前进行了回溯的库。由于我们正在使用1.8版本,所以我们已经引入了这个功能。
其他可参考的网站
建议您大致阅读一下名为cookiecutter-django的Django项目模板中的requirements部分。1
https://github.com/pydanny/cookiecutter-django