django在保存图像的同时压缩图像

假设我们有一个非常简单的Post模型,它将是一个图像及其描述,

但是我们要优化图像大小,这将由我们Post的image字段指出。 这样做有充分的理由-它有助于更快地加载网站/应用程序并减少我们的服务器存储。 在使用Django之前,首先让我们简单介绍一下使用Pillow进行图像压缩的概述。

使用Pillow压缩图像
Pillow是用于图像相关操作的出色Python软件包。 Image类带有用于图像io和操作的方法。 Image.open从文件路径或文件对象读取图像。 Image类的save方法将质量作为以jpg格式保[……]

继续阅读

如何在django中使用apscheduler 执行计划任务

对于任何软件开发人员而言,为将来计划任务都是必不可少的工具。 尽管我们创建的许多编程旨在响应明确的触发或用户事件,但定期执行的后台进程也同样重要。
“每个星期一早晨更新结果。”
“每天晚上分批下单。”
甚至具有每日请求限制的第三方API也隐式要求这种行为。
“我们只能每五分钟请求一次更新。”
幸运的是,许多聪明的人已经解决了这个问题,并且不难找到python本地解决方案。 Advanced Python Scheduler(APS)是一个很好的选择,它具有简单,直观的API以及同类产品中的一些最佳文档。

对于此项目,我们将专注于将APS提供的调度技术与您的常规Django应用程[……]

继续阅读

在centos7中部署kubernetes集群

在部署之前呢,我们准备三台机器,安装centos7的操作系统,工作准备就绪,我开始进行安装k8s前系统基本设置。

1、进入这三台机器,编辑/etc/hosts加入:

10.6.15.10 k8s-master

10.6.15.11 node01

10.6.15.12 node02

2、禁用selinux

编辑/etc/sysconfig/selinux,修改成SELINUX=disabled

3、启用br_netfilter模块

4、禁用交换分区

swapoff[……]

继续阅读

RESTful API身份验证基础

几乎每个REST API都必须具有某种身份验证。最常见的标头之一称为授权。但是,我们在谈论认证,但是为什么要有Authorization标头?

身份验证和授权之间的区别对于理解RESTful API的工作方式以及为什么接受或拒绝连接尝试很重要:

身份验证是对连接尝试凭据的验证。此过程包括使用身份验证协议以纯文本或加密形式将凭据从远程访问客户端发送到远程访问服务器。
授权是对允许连接尝试的验证。成功进行身份验证后,将进行授权。
换句话说,身份验证表明您是您的身份,而授权则询问您是否有权访问特定资源。

我知道在REST API中我们使用Authorization标头进行身份验[……]

继续阅读

使用Celery(和其他任务队列)的常见问题

这是我在使用Celery的Django项目中屡见不鲜的一些问题。 它们可能适用于其他任务队列,我只是没有使用太多。

1.使数据多于引用
如果在任务参数中复制数据库中的数据,则在执行任务之前,队列中的数据可能会过时。 Celery关于任务状态的文档更完整地描述这一点,大家可以看官方文档。

从版本4开始,在Celery上意外地做到这一点并不容易,该版本将默认序列化程序从Pickle更改为JSON。 (如果不确定使用的是哪个序列化程序,请检查设置。)

但是,仍然可以排队数据而不是引用。 例如,假设您在任务参数中使用用户的电子邮件地址而不是ID,将延迟1分钟的电子邮件放入队列。 如[……]

继续阅读

Introduction to Kubernetes Deployment Using Helm

Helm是Kubernetes软件包管理器,用于管理Kubernetes应用程序。 借助Helm,您可以定义,安装和升级Kubernetes应用程序。 它可以用于Kubernetes应用程序的可复制构建。 就像Kubernetes的apt / yum / homebrew一样。

要使用Helm,必须先安装Kubernetes才能使用Helm图表,并且还应该了解Kubernetes。

安装Helm
不同方式安装Helm

根据您的操作系统从此处下载二进制文件,然后将Helm添加到路径中,或导航到终端中包含Helm的文件夹
使用包管理器

Macos:
[crayon-6[……]

继续阅读

写一个python 聊天机器人

介绍
聊天机器人对企业组织和客户都非常有帮助。 大多数人都喜欢直接从聊天室进行交谈,而不是致电服务中心。 Facebook发布的数据证明了机器人的价值。 每月在人与公司之间发送的消息超过20亿条。 HubSpot的研究告诉我们,有71%的人希望通过消息传递应用程序获得客户支持。 这是解决问题的快速方法,因此聊天机器人在组织中拥有光明的前景。

今天,我们将在Chatbot上构建一个令人兴奋的项目。 我们将从头开始实现一个聊天机器人,该聊天机器人将能够理解用户在说什么并给出适当的响应。

先决条件
为了实现聊天机器人,我们将使用Keras(这是一个深度学习库),NLTK(这是自然语言[……]

继续阅读

为Django开发维护每个分支数据库

当您在多个分支上并行进行开发时,简单的git checkout将更新您的代码以匹配您喜欢的任何分支。但是不幸的是,如果您要连接的数据库在每个分支上的架构都不同,则断开连接会导致很多问题。

在进行Django开发时,为解决此问题,我为每个分支维护一个唯一的数据库,并设置了一个git挂钩,以确保每次分支切换后我都指向正确的数据库。

详细方法
在我的设置中,settings.py导入了一个未检入git的可选local_settings.py。
如果分支是master,staging或dev,则下面的git hook脚本将更改该文件中的BRANCH设置以匹配您刚切换到的分支。如果没有,[……]

继续阅读

Django 3 教程 & CRUD 实例

Django 3已发布,具有完全异步支持!在本教程中,我们将通过示例逐步演示如何创建CRUD应用程序。我们将看到如何配置MySQL数据库,启用管理界面以及创建django视图。

我们将使用Bootstrap 4进行​​样式设置。

您将学习如何:

实施CRUD操作,
配置和访问MySQL数据库,
创建Django视图,模板和网址,
使用Bootstrap 4设置UI样式
Django 3功能
Django 3具有许多新功能,例如:

MariaDB支持:Django现在正式支持MariaDB 10.1+。您可以通过MySQL后端使用MariaDB,
ASGI支持[……]

继续阅读