【自学开发之旅】基于Flask的web开发(一)

web开发项目设计:
立项-需求分析-设计(原型图、数据库、api设计)-技术选型-写代码-测试-上线
请添加图片描述
web开发的本质上就是生成超文本。

前端负责展示,后端负责逻辑处理:后逻辑请求(接收请求、响应请求)

概念:
Flask是一个由python语言编写开发而成的轻量级web开发框架,基于 Werkzeugjinjia2 这两个库

特点:(和Django对比着讲)
灵活、轻量、适合api开发、简单

三行启动一个简单flask程序

from flask import Flask
#
app = Flask(__name__)
#内置小型服务器启动app应用,只适用在开发时候。线上生成环境使用专门的wsgi server
app.run()

1.导入Flask。
2.实例化一个Flask对象,这个对象就是我们要启动的应用,通常使用__name__给flask对象实例化的时候一个import_name。app就是得到的核心对象,即启动的应用。在这里插入图片描述
3.app.run()只能在开发环境中使用,不能在生产环境中使用。除非用WSGI server代替。WSGI(python web server gateway interface)web服务器网关接口在这里插入图片描述

我们用python专注于HTML文档,不希望接触到TCP连接,HTTP原始请求和响应格式。
python中有专门的web服务器 – gunicorn、uwsgi
ps:nginx只负责静态页面的展示,不能互动的,带不起我们的python程序(app),(Java-tomcat)。

WSGI 是为python语言定义的web服务器和web应用程序之间一种简单而通用的接口规范

flask是响应html内容的,不用管连接,交给服务器。

推荐使用gunicorn启动flask程序(如linux中)

pip3 install flask
pip3 install gunicorn

[root@nfs ~]# cat flask_init_test.py 
from flask import Flask
app = Flask(__name__)
[root@nfs ~]# gunicorn -b 0.0.0.0 flask_init_test:app
[2023-08-31 20:42:53 +0800] [1821] [INFO] Starting gunicorn 21.2.0
[2023-08-31 20:42:53 +0800] [1821] [INFO] Listening at: http://0.0.0.0:8000 (1821)
[2023-08-31 20:42:53 +0800] [1821] [INFO] Using worker: sync
[2023-08-31 20:42:53 +0800] [1824] [INFO] Booting worker with pid: 1824

路由页面(传参)示例:

from flask import Flask
app = Flask(__name__)

#使用装饰器做
@app.route("/")
def index():
    return "hello world!"

#不使用装饰器做:路由和函数绑定
def secondindex():
    return "second index"
app.add_url_rule("/index2", view_func=secondindex)

#通过url传递参数:使用一对尖括号声明变量
@app.route("/login2/<username>/<passwd>")
def login2(username, passwd):
    if username == "root" and passwd == "123456":
        return f"login success"
    else:
        return f"login false"

@app.route("/stu/<age>")
def stu(age):
    if int(age) >=18:
        return "已经成年,可以上网"
    else:
        return "未成年不能上网噢"

app.run()  #开发环境,内置web服务器

ps:出现重新启动flask程序,页面不刷新的问题
解决方法:
在终端下

(venv) D:\sq-flask>netstat -aon|findstr 5000
  TCP    127.0.0.1:5000         0.0.0.0:0              LISTENING       16164

(venv) D:\sq-flask>taskkill /t /f /pid 16164
成功: 已终止 PID 16164 (属于 PID 1544 子进程)的进程。

开启debug模式

重新启动flask程序即可。

http(超文本传输协议):
1991年,0.9版本,命令GET
1996年,1.0版本,引入POST和HEAD等命令
1997年,1.1版本,引入持久连接(背景:http是无状态协议即这次请求和下次请求是完全独立的)
2015年,2.0版本(二进制分帧实现低延迟和高吞吐量;多路复用;)

HTTP/2.0主要有以下特点:
二进制协议:HTTP/2.0协议将所有信息分割为二进制帧,协议头和数据体都是二进制协议。这种二进制协议的解析相对于文本协议更加高效,且能够减少错误。
多工(Multiplexing):HTTP/2.0允许在一个TCP连接中同时发送多个请求或回应,无需按照顺序一一对应,这样可以避免“队头堵塞”。
数据流:HTTP/2.0的数据包不是顺序发送的,同一个连接中可以连续发送不同的请求包,每个请求包都有唯一的ID。如果数据流发送一半需要取消,只需要给服务器发送一个RST_STREAM帧即可。
首部压缩:HTTP/2.0使用了首部压缩技术,使得报头更加紧凑,传输更快,这有助于改善移动网络环境下的性能。
流量控制:HTTP/2.0提供了流量控制机制,基于HTTP链接的每一跳进行,而非端到端的控制。流量控制基于窗口更新帧进行,接收方可以广播自己准备接收的数据量,以及对整个链接要接收的数据量进行控制。
多路复用:HTTP/2.0允许浏览器在同一时间针对同一域名下的请求有一定数量的限制,这可以减少连接的建立和关闭次数,提高效率。

http标头:
HTTP头部包含了许多重要的信息,以下是一些常见的HTTP头部信息及其含义:
Host:指定请求的URL的主机名和端口号。
User-Agent:指定发送请求的客户端应用程序的名称和版本。
Accept:指定客户端能够接收的MIME类型和排序规则。
Accept-Language:指定客户端能够接收的自然语言和排序规则。
Accept-Encoding:指定客户端能够接收的压缩方法。
Content-Type:指定请求或响应的MIME类型和内容参数。
Content-Length:指定请求或响应的数据长度。
Content-Encoding:指定请求或响应的数据压缩方法。
If-Match:用于条件请求,指定资源的匹配条件。
If-None-Match:用于条件请求,指定资源的非匹配条件。
If-Modified-Since:用于条件请求,指定资源的修改时间。
If-Unmodified-Since:用于条件请求,指定资源的未修改时间。
Range:用于范围请求,指定请求的资源的范围。
ETag:用于条件请求,指定资源的唯一标识符。
Last-Modified:用于条件请求,指定资源的最后修改时间。
这些头部信息提供了关于请求和响应的重要信息,使得客户端和服务器能够进行高效的通信和资源共享。

http方法:
增POST、删DELETE、改PUT、查GET、HEAD获得头部信息、OPTIONS查询接口支持什么方法。(不强迫但最好遵守规范)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/98558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成集云 | 飞书审批同步金蝶云星空 | 解决方案

源系统成集云目标系统 方案介绍 飞书员工报销审批通过后&#xff0c;审批单据内容和审批状态实时同步金蝶云星空 飞书是字节跳动于2016年自研的新一代一站式协作平台&#xff0c;将即时沟通、日历、云文档、云盘和工作台深度整合&#xff0c;通过开放兼容的平台&#xff0c;…

Tomcat安装及配置教程-Windows和Linux

本文主要介绍Windows版本Tomcat部署的详细步骤和列出Linux部署的简要细节命令,其中Windows从一到七,Linux用第八个标题讲述 一,安装 1,打开官网,https://tomcat.apache.org/,选择Tomcat 8.5.93版本,点击Download,根据系统版本选择压缩包 2,下载完毕,将压缩包解压,将所有文件放…

IBM Spectrum LSF Explorer 为要求苛刻的分布式和任务关键型高性能技术计算环境提供强大的工作负载管理

IBM Spectrum LSF Explorer 适用于 IBM Spectrum LSF 集群的强大、轻量级报告解决方案 亮点 ● 允许不同的业务和技术用户使用单一解决方案快速创建和查看报表和仪表板 ● 利用可扩展的库提供预构建的报告 ● 自定义并生成性能、工作负载和资源使用情况的报…

day 43 | ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III func maxProfit(prices []int) int {dp : make([][]int , len(prices))dp[0] []int{0, -prices[0], 0, -prices[0], 0}for i : 1; i < len(prices);i{val0 : dp[i - 1][0]val1 : max(dp[i - 1][0] - prices[i], dp[i - 1][1])val2 : max(dp[i - …

HTML 播放器效果

效果图 实现代码 <!DOCTYPE HTML> <html><head><title>爱看动漫社区 | 首页 </title><link href"css/bootstrap.css" relstylesheet typetext/css /><!-- jQuery --><script src"js/jquery-1.11.0.min.js"…

利用MarkovJunior方法生成迷宫和图形的MATLAB演示[迷宫生成、贪吃蛇、地图生成、图案生成]

利用MarkovJunior方法生成迷宫和图形的MATLAB演示[迷宫生成、贪吃蛇、地图生成、图案生成] 0 前言1 介绍MarkovJunior2 迷宫生成2.1 深度优先迷宫生成2.2 广度优先迷宫生成 3 其它生成图案3.1 地牢地图3.2 贪吃蛇3.3 植物花 惯例声明&#xff1a;本人没有相关的工程应用经验&am…

小文智能GPT助手介绍

如何使用小文交互的GPT助手&#xff0c;让AI更加智能&#xff0c;适用更多场景&#xff1f; 在小文智能最新推出的4.0版本&#xff0c;有一个新功能&#xff0c;叫做GPT助手。GPT助手&#xff0c;顾名思义&#xff0c;即在小文智能的场景中&#xff0c;接入ChatGPT&#xff0c…

com.google.guava:guava 组件安全漏洞及健康分析

组件简介 维护者google组织许可证类型Apache-2.0首次发布2010 年 4 月 26 日最新发布时间2023 年 8 月 1 日GitHub Star48189GitHub Fork10716依赖包28,694依赖存储库219,576 Guava 是 Google 的一组核心 Java 库&#xff0c;其中包括新的集合类型&#xff08;例如 multimap 和…

MongoDB实验——在Java应用程序中操作 MongoDB 数据

在Java应用程序中操作 MongoDB 数据 1. 启动MongoDB Shell 2. 切换到admin数据库&#xff0c;使用root账户 3.开启Eclipse&#xff0c;创建Java Project项目&#xff0c;命名为MongoJava File --> New --> Java Project 4.在MongoJava项目下新建包&#xff0c;包名为mo…

算法——排序

排序 下面的代码会用到宏定义&#xff0c;因为再C中没有swap交换函数&#xff0c;所以对于swap的宏定义代码如下&#xff1a; #define swap(a, b) {\__typeof(a) __a a; a b; b __a;\ } 稳定排序&#xff1a; 1.插入排序&#xff1a; 插入排序会将数组&#xff0c;分位两个部…

C语言每日一练--Day(17)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;数对 截取字符串 &#x1f493;博主csdn个人主页&#xff1a;小小unico…

Linux——守护进程

简述 不受用户登录、注销影响的进程称为守护进程 特点 后台运行&#xff1a;守护进程在后台默默地执行任务&#xff0c;不与用户交互。它不会向终端输出信息&#xff0c;也不会从终端接收输入。 无终端关联&#xff1a;守护进程通常与任何终端会话&#xff08;比如SSH会话&…

软件测试/测试开发丨Pytest和Allure报告 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26755 Pytest 命名规则 类型规则文件test_开头 或者 _test 结尾类Test 开头方法/函数test_开头注意&#xff1a;测试类中不可以添加__init__构造函数 注…

cvat 安装部署

官网地址&#xff1a; https://github.com/opencv/cvat/tree/masterhttps://github.com/opencv/cvat/tree/master 1.从官网上下载源码地址。 2.配置环境变量 vim /etc/profile source /etc/profile 或者执行&#xff1a; export CVAT_HOSTyour-ip-address 3.执行命令 …

无涯教程-Android - 应用组件

应用程序组件是Android应用程序的基本组成部分&#xff0c;这些组件需要在应用程序清单文件 AndroidManifest.xml 注册&#xff0c;该文件描述了应用程序的每个组件以及它们如何交互。 Android应用程序可以使用以下四个主要组件- Sr.NoComponents & 描述1 Activities 它们…

BMC相关知识

简介 BMC&#xff08;Baseboard Management Controller&#xff09;&#xff0c;基板管理控制器&#xff0c;普通PC没有&#xff0c;服务器产品必备。BMC是一个独立的系统&#xff0c;只要通电即可运行&#xff0c;服务器无需开机&#xff0c;不依赖其它软硬件&#xff0c;如O…

ChatGPT 总结数据分析的所有知识点

ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…

打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

EXCEL中点击单元格,所在行和列都改变颜色

在日常工作中&#xff0c;尤其是办公室工作人群&#xff0c;尝尝需要处理大量的数据&#xff0c;在对数据进行修改时&#xff0c;时长发生看错行的事情&#xff0c;导致数据越改越乱&#xff0c;因此&#xff0c;我常用的一种方法就是选中单元格时&#xff0c;所在行、列标记为…

suricata安装与配置

一、功能介绍 1、概述 suricata来源于经典的nids系统snort&#xff0c;是一套基于网络流量的威胁检测引擎&#xff0c;整合了ids,ips&#xff0c;network security monitoring(NSM)和PCAP processing等功能。 2、IDS功能 通过监听网卡流量并匹配规则引擎进行入侵实时监测和…