在这个由三部分组成的教程中,我们将使用Flask(一个 Python 微框架)构建一个 CRUD(创建、读取、更新、删除)员工管理 Web 应用程序。我将应用程序命名为 Project Dream Team,它将具有以下功能: 用户将能够以员工身份注册和登录 管理员将能够创建、更新和删除部门和角色 管理员将能够将员工分配到部门并为其分配角色 管理员将能够查看所有员工及其详细信息 第一部分将涵盖: 数据库设置 楷模 移民 主页 验证 准备好?开始了! 先决条件 本教程建立在我的介绍性教程Flask 入门的基础上,从它停止的地方开始。它假设您首先安装了以下依赖项: 蟒蛇 2.7 烧瓶 virtualenv(和,可选,virtualenvwrapper) 您应该设置并激活了一个虚拟环境。您还应该具有以下文件和目录结构: ├── dream-team ├── app │ ├── __init__.py │ ├── templates │ ├── models.py │ └── views.py ├── config.py ├── ..
Category : 教程系列
介绍 Google Maps 是 Google 提供的地图服务,支持多种配置设置。将 Google 地图添加到您的应用程序可以为用户提供比街道地址或坐标集更多的上下文信息。 本教程旨在将 Google Maps API 集成到您的 React 组件中,并使您能够在您的网站上显示地图。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 熟悉React JavaScript 框架。 一个Google Maps JavasScript API 密钥。 这将需要一个 Google 帐户,登录到 Google Cloud Platform Console,创建一个新项目,并为该项目启用 Google Maps JavasScript API。 注意:为避免在使用 Google Maps API 时出现“仅用于开发目的”消息,您需要提供有效的信用卡并与 Google Cloud 项目的结算帐户相关联,但本教程不需要这样做。 本教程已通过 Node v14.2.0、npmv6.14.5、reactv16.13.1 和google-maps-reactv.2.0.6 验证。 步骤 1 ..
介绍 的filter()阵列方法创建与下从现有的阵列的给定条件落入元素的数组: var numbers = [1, 3, 6, 8, 11]; var lucky = numbers.filter(function(number) { return number > 7; }); // [ 8, 11 ] 上面的示例采用numbers数组并返回一个新的过滤数组,其中仅包含大于 7 的值。 过滤器语法 var newArray = array.filter(function(item) { return condition; }); 的项目参数是作为过滤器()检查到当前元素的引用数组中它抵靠状态。在对象的情况下,这对于访问属性很有用。 如果当前项通过条件,则将其发送到新数组。 过滤对象数组 .filter() 的一个常见用例是通过对象的属性使用对象数组: var heroes = [ {name: “Batman”, franchise: “DC”}, {name: “Ironman”, franchise: “Marvel”}, {name: ..
介绍 服务器发送事件 (SSE) 是一种基于 HTTP 的技术。在客户端,它提供了一个名为EventSource(HTML5 标准的一部分)的 API ,允许我们连接到服务器并从它接收更新。 在决定使用服务器发送的事件之前,我们必须考虑两个非常重要的方面: 它只允许从服务器接收数据(单向) 事件仅限于 UTF-8(无二进制数据) 如果您的项目仅接收诸如股票价格或正在进行的某事的文本信息之类的信息,则可以使用 Server-Sent Events 而不是WebSockets之类的替代方案。 在本文中,您将为后端和前端构建一个完整的解决方案,以处理从服务器到客户端的实时信息流。服务器将负责向所有连接的客户端发送新的更新,Web 应用程序将连接到服务器,接收这些更新并显示它们。 先决条件 要完成本教程,您需要: Node.js 的本地开发环境。遵循如何安装 Node.js 并创建本地开发环境。 熟悉快递。 熟悉 React(和hooks)。 cURL用于验证端点。这可能已经在您的环境中可用,或者您可能需要安装它。熟悉使用命令行工具和选项也会有所帮助。 本教程已通过 cURL v7.64.1、Node v15.3.0、npmv7.4.0、expressv4.17.1、body-parserv1.19.0、corsv2.8.5 和reactv17.0.1 验证。 第 1 步 – 构建 SSE Express 后端 在本节中,您将创建一个新的项目目录。项目目录内部将是服务器的子目录。稍后,您还将为客户端创建一个子目录。 首先,打开你的终端并创建一个新的项目目录: mkdir node-sse-example 导航到新创建的项目目录: cd node-sse-example 接下来,创建一个新的服务器目录: mkdir sse-server 导航到新创建的服务器目录: cd ..
介绍 该share插件允许您为用户提供使用本机平台共享对话框共享内容的能力。 在本文中,您将构建一个包含鳄鱼列表的示例 Flutter 应用程序,并添加与其他用户共享鳄鱼的功能。 先决条件 要完成本教程,您需要: 下载并安装Flutter。 下载并安装Android Studio 或 Visual Studio Code。 建议为您的代码编辑器安装插件: Flutter和Dart为 Android Studio 安装的插件。 Flutter 为 Visual Studio Code 安装的扩展。 本教程通过 Flutter v2.0.6、Android SDK v31.0.2、Android Studio v4.1 验证。 步骤 1 — 设置项目 为 Flutter 设置环境后,您可以运行以下命令来创建新应用程序: flutter create flutter_share_example 导航到新的项目目录: cd flutter create flutter_share_example<^> 使用flutter create将生成一个演示应用程序,该应用程序将显示单击按钮的次数。 第 2 步 – 添加share插件 ..
介绍 虽然组件槽满足某些用例,但在其他情况下,您希望槽内的模板能够访问来自承载槽内容的子组件的数据。例如,如果您尝试在容器中允许自定义模板,同时仍保留对这些容器的数据属性的访问权限,您将需要使用作用域槽。 作用域组件槽是 Vue 2.1.0 中引入的一个特性。它们允许您将子组件的属性传递到作用域插槽中并从父组件访问它们。有点像反向属性传递。 在本教程中,您将探索一个示例 Vue 项目,该项目的父组件和子组件与作用域组件槽共享属性。 先决条件 如果你想跟随这篇文章,你需要: 熟悉设置 Vue.js 项目和使用父组件和子组件会有所帮助。 笔记: 在 Vue 2.1.0 中,scope引入了该属性。 在 Vue 2.5.0 中,slot-scope引入了该属性。 在Vue 2.6.0 中,插槽的语法发生了变化。本教程将介绍 2.6.0 语法。 本教程已通过 Node v15.10.0、npmv7.6.0 和vuev2.6.11 验证。 使用作用域组件槽 要创建作用域组件<slot>,您首先需要将属性从子组件传递到命名或未命名的插槽中。 下面是一个ChildComponent包含未命名和命名<slot>元素的示例: 子组件.vue <template> <div> <p>This is a child component.</p> <div> <p>Default Slot</p> <slot v-bind:text=”defaultSlotText”></slot> </div> <div> <p>Named Slot</p> <slot name=”namedSlot” ..
介绍 现代 CSS 是一种强大的工具,可用于创建许多高级用户界面 (UI) 功能。过去,这些功能依赖于 JavaScript 库。 在本指南中,您将设置几行 CSS 以在网页上创建滚动视差效果。您将使用图像placekitten.com作为占位符背景图像。 完成本教程后,您将拥有一个具有纯 CSS 滚动视差效果的网页。 警告:本文使用了无法跨浏览器工作的实验性 CSS 属性。这个项目已经过测试并且可以在 Chrome 上运行。 由于某些浏览器的优化,此技术在 Firefox、Safari 和 iOS 中效果不佳。 第 1 步 – 创建一个新项目 在这一步中,使用命令行来设置一个新的项目文件夹和文件。首先,打开您的终端并创建一个新的项目文件夹。 键入以下命令以创建项目文件夹: mkdir css-parallax 在本例中,您调用了文件夹css-parallax。现在,切换到css-parallax文件夹: cd css-parallax 接下来,使用以下命令index.html在您的css-parallax文件夹中创建一个文件nano: nano index.html 您将把项目的所有 HTML 放在这个文件中。 在下一步中,您将开始创建网页的结构。 步骤 2 — 设置应用程序结构 在此步骤中,您将添加创建项目结构所需的 HTML。 在您的index.html文件中添加以下代码: css-视差/index.html <!DOCTYPE html> <html lang=”en”> ..
介绍 “LAMP”堆栈是一组通常安装在一起的开源软件,以使服务器能够托管用 PHP 编写的动态网站和 Web 应用程序。该术语是代表一个缩写大号inux下操作系统,与甲帕什web服务器。该网站的数据存储在一个中号ySQL数据库,和动态内容通过处理P HP。 在本指南中,我们将在 Ubuntu 20.04 服务器上安装 LAMP 堆栈。 先决条件 为了完成本教程,您需要有一个带有非 rootsudo用户帐户和基本防火墙的 Ubuntu 20.04 服务器。这可以使用我们的 Ubuntu 20.04 初始服务器设置指南进行配置。 步骤 1 — 安装 Apache 和更新防火墙 Apache Web 服务器是世界上最受欢迎的 Web 服务器之一。它有据可查,拥有活跃的用户社区,并且在 Web 的大部分历史中都被广泛使用,这使其成为托管网站的绝佳默认选择。 安装使用Apache Ubuntu的软件包管理器,apt: sudo apt update sudo apt install apache2 如果这是您第一次sudo在此会话中使用,系统将提示您提供用户密码以确认您拥有使用apt. 系统还会提示您按Y,然后按 来确认 Apache 的安装ENTER。 安装完成后,您需要调整防火墙设置以允许 HTTP 流量。UFW 具有不同的应用程序配置文件,您可以利用它们来实现这一目标。要列出所有当前可用的 UFW 应用程序配置文件,您可以运行: ..
作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 2019 年 10 月发布的Python 3.8通过:=语法为 Python 添加了赋值表达式。赋值表达式语法有时也被称为“海象运算符”,因为它:=有点像长着獠牙的海象。 赋值表达式允许变量赋值发生在较大的表达式中。虽然赋值表达式对于编写正确的 Python 代码从来不是绝对必要的,但它们可以帮助使现有的 Python 代码更加简洁。例如,使用:=语法的赋值表达式允许在ifstatements内部分配变量,这通常可以通过消除if语句前后行中的变量赋值来生成更短、更紧凑的 Python 代码部分。 在本教程中,您将在几个示例中使用赋值表达式来生成简洁的代码段。 先决条件 要充分利用本教程,您需要: Python 3.8 或更高版本。赋值表达式是从 Python 3.8 开始添加的新功能。您可以查看如何在 Ubuntu 18.04 服务器上安装 Python 3 和设置编程环境教程,以帮助安装和升级 Python。 Python 交互式控制台。如果您想尝试本教程中的示例代码,可以使用如何使用Python 交互式控制台教程。 熟悉Python 3 中的while循环、if语句、列表推导式和函数很有用,但不是必需的。您可以查看我们的How To Code in Python 3系列教程以获取背景知识。 在if语句中使用赋值表达式 让我们从一个如何在if语句中使用赋值表达式的示例开始。 考虑以下检查列表长度并打印语句的代码: some_list = [1, 2, 3] if ..
介绍 Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它提供了许多强大的功能,包括可动态加载的模块、强大的媒体支持以及与其他流行软件的广泛集成。 在本指南中,我们将解释如何在 Ubuntu 20.04 服务器上安装 Apache Web 服务器。 先决条件 在您开始本指南之前,您应该拥有一个在您的服务器上配置了 sudo 权限的普通非 root 用户。此外,您需要启用基本防火墙来阻止非必要端口。您可以按照我们的 Ubuntu 20.04 初始服务器设置指南了解如何配置常规用户帐户并为您的服务器设置防火墙。 当您有可用的帐户时,请以非 root 用户身份登录以开始。 第 1 步 – 安装 Apache Apache 在 Ubuntu 的默认软件存储库中可用,因此可以使用传统的包管理工具安装它。 让我们首先更新本地包索引以反映最新的上游更改: sudo apt update 然后,安装apache2软件包: sudo apt install apache2 确认安装后,apt将安装 Apache 和所有需要的依赖项。 步骤 2 — 调整防火墙 在测试 Apache 之前,有必要修改防火墙设置以允许外部访问默认 Web ..