使用Beautiful Soup和Django REST Framework创建实时API

几周前,我对交易感兴趣,发现大多数公司都提供他们的付费服务来分析外汇数据。 我的目标是实施一些机器学习算法来预测市场。 因此,我决定创建一个实时API以便在React中使用它并测试自己的自动化策略。

在本教程结束时,您无需使用任何在线服务即可将任何网站转换为API。 我们将主要使用Beautiful Soup和Django REST Framework通过抓取外汇数据来构建实时API。

您需要对Django和Ubuntu有基本的了解,才能运行一些重要的命令。 如果您使用的是其他操作系统,则可以下载Anaconda来简化工作。

安装与配置
首先,通过以下命令创建并激活虚拟环境[……]

继续阅读

在Django模板中安全地包含JavaScript数据

Django模板通常用于将数据传递到JavaScript代码。 不幸的是,如果实施不正确,这将打开HTML注入的可能性,从而引发XSS(跨站点脚本)攻击。

这是我在Django项目中遇到的最常见的安全问题之一。 实际上,我可能已经在每个相当大的Django项目中以某种形式看到了它。

很难正确! 从历史版本上看也很困难,因为只有Django 2.1才添加了json_script模板标签来安全地执行此操作。

让我们看一下问题以及如何使用json_script修复它。

危险的方法:
让我们看一下这个view:

继续阅读

如何在Django admin的巨大表格中进行搜索

大家好!

我们都知道Django管理员是Django的超酷工具。 您可以检查模型,并从表中添加/编辑/删除记录。 如果您熟悉Django,我相信您已经知道了。

我得到了一个任务:我们的客户想按一个字段在一个表中搜索。 看起来很容易,对吧? 好吧,棘手的部分是该表具有523.803.417记录。

哇。 523.803.417条记录。

至少模型不是那么复杂:

在models.py上:

因此,对于Django管理员而言,应该轻而易举,对吗? 错误。

过程
首先,我只是在admin.py上添加了[……]

继续阅读

了解Kubernetes的请求和限制

您是否看到您的应用程序卡住或无法响应健康检查请求,并且找不到任何解释? 可能是因为CPU配额限制。 我们将在这里解释为什么。

容器和Kubernetes入门
Kubernetes(缩写为k8s)在现在的基础设施世界中几乎是事实上的标准。 它是一个容器编排工具。

容器
过去,我们曾经创建过诸如Java JAR / WAR或Python Eggs或Executables之类的工件,然后将它们让别人在服务器上运行它们。但是要运行它们,还有更多工作-必须安装应用程序运行时(Java / Python),适当的文件,不合适的位置,特定的OS等。它需要大量的配置管理,并且经常引起开发人员和[……]

继续阅读

生产环境集成Django和Vue.js

随着Python的普及和Vue.js的兴起,越来越多的开发人员希望将这两个框架一起使用来构建单页应用程序(SPA)。

我想出了一种在开发和生产环境中均可使用的Django-Vue集成策略。另外,它不需要额外的依赖关系。

我的方法涉及三个部分:

配置Vue以使用Django开发服务器进行本地开发,并在生产中使用Django生产服务器
配置Django以将Vue.js应用程序的生产模板作为其主页
配置Django和Vue在生产中提供Vue的静态文件(图像,CSS,JS)
让我们开始吧。

演示应用
好吧,也许我们还不会开始。 我在博客示例存储库中组合了一个演示应用程序[……]

继续阅读

使用celery和Django处理异步任务-part2

定期任务
我们经常需要在django项目中定期运行任务,在此芹菜可以通过芹菜节拍满足我们的需求,芹菜节拍不过是一个调度程序,该调度程序定期执行目标,并且可以隐式和显式定义。

请确保一次运行一个计划程序,否则一次将导致重复的任务

根据您所在的时区,在settings.py中设置时区,我们已经在本教程的前面进行了设置。

timezone = ‘Europe/London’

现在,我们可以通过两种方式创建定期任务,或者通过在celery.py中手动添加调度程序的代码,或者通过安装django-celery-beat软件包来使我们可以在Django Admin中创建调度程序。[……]

继续阅读

使用celery和Django处理异步任务

介绍
我们可能需要一些可以安排一些任务并定期运行一些任务或异步处理长任务的东西,而这一切都可以通过在Django Project中使用Celery来实现。

什么是Celery?
Celery是一个专注于实时处理的任务队列,它还支持任务调度。 Celery快速,简单,高度可用且灵活。

Celery需要消息传输来发送和接收消息,这可以由Redis或RabbitMQ完成。

入门
让我们开始在您的virtualenv中安装Celery软件包。

安装Celery

[crayon-5e587587791e1[……]

继续阅读

Django开发人员常犯的7个错误

Django是强大的Web框架,但越强大责任也大。 在本文中,我们将介绍即使经验丰富的Django开发人员也会犯的常见错误,但是大多数成功的Django项目或早或晚都需要处理这些错误。

重新发明轮子
Django具有许多现成的功能,甚至在第三方软件包中还有更多功能。 在写东西之前,尝试“搜索”您要解决的问题-可能已经存在功能丰富的解决方案。

您也可以使用在线目录Django Projects,其中类别“ apps”(用于构建项目的小型组件)具有3200多个项目。 以下是清单前两页中有趣的程序包的简短示例:

Haystack模块化搜索Django
Django的Django[……]

继续阅读

kubectl常用命令

定义
Kubernetes命令的备忘单。

Master:控制Kubernetes节点的机器。这是所有任务分配的起点。

Node:这些计算机执行请求的分配任务。 Kubernetes主机控制它们。

Pod:一组部署到单个节点的一个或多个容器。容器中的所有容器共享一个IP地址,IPC,主机名和其他资源。 Pod将网络和存储从底层容器中抽象出来。这使您可以更轻松地在集群中移动容器。

Replication controller:此控件控制应在集群中某处运行的Pod的相同副本数。

Service:这将工作定义与吊舱分离。 Kubernetes服务代理将服务请求自动发送到[……]

继续阅读

jQuery prepend()与示例

在本教程中,我将解释jQuery中的.prepend()方法。

jQuery prepend()方法用于将指定的内容插入所选元素的开头。 它是jQuery中的内置方法。

如果我们想在所选元素的末尾插入内容,那么我们想使用jQuery .append()方法。

语法:

JQUERY PREPEND()方法的参数
此.prepend()方法接受两个参数,

内容
这是必需的参数,用于指定需要插入的内容。 要插入的可能值为:

  1. DOM元素
    HTML元素
    jQuery对象
    文本

FUNC[……]

继续阅读

在JavaScript中搜索数组的4种方法

在JavaScript中,有很多有用的方法可以在数组中查找项目。 您始终可以使用基本的for循环,但是使用ES6 +,有很多方法可以遍历数组并轻松找到所需的内容。

有这么多种不同的方法,您将使用哪种方法? 例如,当搜索数组时,是否要知道元素是否完全在数组中? 您需要元素的索引还是元素本身?

对于每种将要介绍的方法,必须了解它们都是Array.prototype的内置方法,这一点很重要。 这意味着您只需要将它们链接到任何带有点符号的数组上即可。 这也意味着这些方法不适用于对象或数组以外的任何对象(尽管与字符串重叠)。

我们将研究以下Array方法:
[crayon-5e587[……]

继续阅读

通过SQL了解Django中的分组依据-Django QuerySet和SQL并排

在任何类型的ORM中,聚合都是造成混乱的根源,而Django也是如此。 该文档提供了各种示例和备忘单,它们演示了如何使用ORM对数据进行分组和聚合,但是我决定从另一个角度进行研究。

在本文中,我将QuerySet和SQL并排放置。 如果您最喜欢SQL,那么这是适合您的Django GROUP BY速查表。

如何在Django中分组
为了演示不同的GROUP BY查询,我将使用Django内置的django.contrib.auth应用程序中的模型。

Django ORM生成带有长别名的SQL语句。 为简便起见,[……]

继续阅读

Django是2020年我的首选应用程序框架

Django是一个成熟而强大的Web应用程序框架,提供了许多“包含电池”功能。 对于您如何使用它,这是相当自以为是的,这减轻了开发人员的许多认知负担。

采用Django或任何自以为是的框架,与任何关系都非常相似。 是的,存在缺陷和小小的挫折,但是如果您在其中投入并投入自己(以及您的团队),您将获得最大的收益。

  • 优点
    对数据进行简单管理
    丰富的附件,插件和文档生态系统
    与工具和IDE的出色集成
    包括的大多数东西
    强大的DX(开发人员经验)
    命令行和长时间运行或守护进程的任务运行器
    随着需求的变化,您可以成长为框架

缺点
没有完美的框架,Django也不例外。[……]

继续阅读

使用Django和Postgres进行全文搜索

这些天,我需要全文搜索。这个区块中最酷的工具是Elastic Search和Sorl:他们快速,灵活,资源消耗沉重并且需要配合Java运行。

放弃这些选项后,我剩下了Xapian和postgres全文搜索的功能,而xapian似乎功能更丰富,我决定从postgres开始,因为它与django进行了天然集成,并且对这个特定项目的要求不高。

项目及其要求
您可能已经注意到,我正在运行job board。 Voorjob基本上是从lever.co聚合工作,并让用户搜索它。目前,我在数据库中大约有25,000个工作,这个数字增长缓慢,每增加2或3个工作,就会关闭另一个工作。是的,如果我采[……]

继续阅读

Django3中直接添加Websockets方式

现在Django 3.0附带了对ASGI的支持,将Websockets添加到Django应用中不需要任何额外的依赖关系。 在本文中,您将学习如何通过扩展默认的ASGI应用程序来使用Django处理Websocket。 我们将介绍如何在示例ASGI应用程序中处理Websocket连接,发送和接收数据以及实现业务逻辑。

入门
首先,您需要在计算机上安装Python> = 3.6。 Django 3.0仅与Python 3.6及更高版本兼容,因为它使用了async和await关键字。 完成Python版本设置后,创建一个项目目录并CD进入。 然后,将Django安装在virtualen[……]

继续阅读

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 -a

然后编辑/etc/fstab文件,将swap这行注[……]

继续阅读

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-5[……]

继续阅读

写一个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支持[……]

继续阅读

Django 实战技巧

摘要
现实生活中的django应用程序通常具有一些需求,而这些需求通常无法通过互联网上的大多数django教程很好地宣传。 在这里,我分享了一些技巧,可以帮助您构建更好的Django应用。

使用UUID代替ID来引用对象。
举例来说,假设您要构建的应用程序将破坏金融市场,也许是比特币,或者您将要修复银行系统(请这样做)。

您的用户登录,进行交易并看到类似以下内容:

 

用户将意识到到目前为止,在您的应用程序上仅进行了37笔交易,说实话,他可能不会在意这一点,但是根据您的听众的不同,隐藏此信息可[……]

继续阅读

Kubernetes水平Pod自动缩放的糟糕状态

在以前的生活中,我做了很多与系统控制的工作,监控和调整物理系统,而总是有非常满足约看到他们在行动的东西。在计算中,其使用大多局限于自动缩放系统,但即使有理论往往是在一个非常有限的方式误用或使用。即使在其中内置完全围绕调度工作负荷的系统,像Kubernetes,实施是非常有限的。在这篇文章中,我将看看Kubernetes吊舱自动配置器的默认实现的调度研究,并在一些替代品(也缺乏)。

pod水平自动扩展
Kubernetes附带了一个名为(HPA)的pod自动配置器。它将管理部署,StatefulSet或ReplicaSet,荚基于当前量荚多少资源使用和量必须由用户提供预定的目标。[……]

继续阅读

Deploy a Laravel Application to Kubernetes using Gitlab CI

Prerequisites

This article assumes you have a basic understanding of Docker and Kubernetes, Gitlab CI and that you have already set up a Kubernetes Cluster.

Start a Laravel Project

The first thing you’ll need is a Laravel application, use composer to start a new project.

[crayon-5e5875878b9b[……]

继续阅读

djcelery redis做后台报错

 

报错内容:

 

pip list redis

>redis (3.2.0)

安装:pip install redis==2.10.6

后解决。

admin后台参数格式:

The arguments and keyword arguments must use double quotes.

So if you are specifying arguments, it should be like:
[crayon-5e5875878be7b1443[……]

继续阅读