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

这篇具有很好参考价值的文章主要介绍了【自学开发之旅】基于Flask的web开发(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

web开发项目设计:
立项-需求分析-设计(原型图、数据库、api设计)-技术选型-写代码-测试-上线
【自学开发之旅】基于Flask的web开发(一),python,flask,http,web
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就是得到的核心对象,即启动的应用。【自学开发之旅】基于Flask的web开发(一),python,flask,http,web
3.app.run()只能在开发环境中使用,不能在生产环境中使用。除非用WSGI server代替。WSGI(python web server gateway interface)web服务器网关接口【自学开发之旅】基于Flask的web开发(一),python,flask,http,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 子进程)的进程。

重新启动flask程序即可。

开启debug模式:
举例:
app.run(debug=True, host=“0.0.0.0”, port=8000)

Debug后的一些讲解flask路由管理原理
【自学开发之旅】基于Flask的web开发(一),python,flask,http,weburl_map:保存的是url和endpoint的映射关系
Map([<Rule ‘/static/’ (OPTIONS, HEAD, GET) -> static>,
<Rule ‘/’ (OPTIONS, HEAD, GET) -> index>,
<Rule ‘/index2’ (OPTIONS, HEAD, GET) -> secindex>,
<Rule ‘/login//’ (OP
TIONS, HEAD, GET) -> login>,
<Rule ‘/stu/’ (OPTIONS, HEAD, GET) -> stu>])

view_functions:保存的是endpoint和视图函数的映射关系
{‘static’: <function Flask.init.. at 0x0000020BD2600790>, ‘index’: <function index at 0x0000020BD2617040>, ‘secindex’: <function secindex at 0x0000020BD260CEE0>, ‘login’: <function login at 0x0000020BD2617280>, ‘stu’: <function stu at 0x0000020BD2617310>}
【自学开发之旅】基于Flask的web开发(一),python,flask,http,web
引入中间层:解耦,后续扩展

面试题:讲讲flask的路由管理原理
回答:1.首先flask的路由管理由两张表管理,一张url_map表,一张view_functions表,其中url_map中保存url和endpoint的映射关系,view_functions中保存endpoint和视图函数的映射关系。 2.接收到请求之后,先解析http头部,拿到请求的url路径在url_map表里找,如果没有没有找到,直接返回"404 NOT FOUND",如果找到对应的endpoint,则在view_functions表里找到对应的function,然后交给它处理返回。3.endpoint在整个生命周期是全局唯一的。

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查询接口支持什么方法。(不强迫但最好遵守规范)

接受客户端请求:
1.客户端所有请求都封装在一个对象中(request对象
2.客户端请求过来的数据包中 – 携带的数据、http包头

from flask import Flask, request
app = Flask(__name__)

@app.route("/login")
def login():
    print(request.args)
    return "login html"

app.run(debug=True, host="0.0.0.0", port=9000)

【自学开发之旅】基于Flask的web开发(一),python,flask,http,web
3.request常用属性:
args 接收传递过来的url携带的参数
服务端获取:
【自学开发之旅】基于Flask的web开发(一),python,flask,http,web
print(request.args.get(“username”)) —jd
print(request.args.get(“passwd”)) —123456文章来源地址https://www.toymoban.com/news/detail-685892.html

到了这里,关于【自学开发之旅】基于Flask的web开发(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [记录]基于Flask Web全栈开发实战(黄勇·著)

    Flask 学习 flask 项目配置 Debug模式 Host、Port配置 在pycharm中,设置debug模式和port端口号 在app.config中添加配置 加载配置文件 URL 和 视图 定义无参URL 定义有参URL 指定参数类型 语法:类型:参数名 如: @app.route(‘/blog/int:blog_id’) def blog_detail(blog_id):      return f’您查找的博客

    2024年04月13日
    浏览(43)
  • Python Web 开发之 Flask 入门实践

    导语:Flask 是一个轻量级的 Python Web 框架,广受开发者喜爱。本文将带领大家了解 Flask 的基本概念、搭建一个简单的 Web 项目以及如何进一步扩展功能。 Flask 是一个基于 Werkzeug 和 Jinja2 的微型 Web 框架,它的特点是轻量、易学习、可扩展。使用 Flask,我们可以快速构建 Web 应

    2024年01月22日
    浏览(61)
  • 基于flask的web应用开发——接受post请求

    操作系统:Windows10 家庭版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:flask POST是HTTP协议定义的一种请求方法,用于向指定资源提交要被处理的数据。与之对应的是GET请求方法,GET方法用于请求获取资源,而POST方法用于提交更新资源或者提交一些需要处

    2024年02月14日
    浏览(39)
  • Python Web开发:Django与Flask框架

    Django和Flask都是Python中非常受欢迎的Web开发框架。虽然它们都是用于构建Web应用程序的工具,但它们在设计理念、使用方式和适用场景等方面存在一些差异。 Django Django是一个“大而全”的框架,遵循MVC设计模式。它内置了很多功能,如ORM(对象关系映射)、模板引擎、表单处

    2024年02月22日
    浏览(53)
  • Python Flask Web开发二:数据库创建和使用

    数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能,还支持数据的关联和连接,保证数据的一致性和安全性。通过合理地设计和使用数据库,开发人员可以构建强大、可靠的 Web 应用程序,满足用户的需求。这里介绍:SQLAlchemy 安装pymysql和

    2024年02月10日
    浏览(65)
  • flask web学习之flask与http(四)

    一、重定向进阶功能 1.1 重定向回上一个页面 有时候,我们在某些界面执行操作一些操作后,不希望界面跳转到其他指定网页上,而希望网页能重定向为用户刚才浏览的界面,以便继续完成操作,例如在某个页面需要登录后才能进行操作,我们希望登录后不跳转到主页界面,

    2024年02月03日
    浏览(35)
  • Python 2.x 中如何使用flask模块进行Web开发

    Python 2.x 中如何使用 Flask 模块进行 Web 开发 引言: 随着互联网的快速发展,Web开发成为了互联网行业中一项非常重要的技术。而在 Python 的Web开发中,Flask框架是一种非常流行的选择。它简单轻巧,灵活易用,适合中小型项目的快速开发。本文将介绍如何在 Python 2.x 版本中使用

    2024年02月14日
    浏览(45)
  • python Web开发 flask轻量级Web框架实战项目--学生管理系统

     上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个博客的,敬请期待吧~~~ 介如很多朋友问

    2024年02月16日
    浏览(61)
  • Python Flask Web开发三:数据表的字段增加和删除

    在实际的开发中,数据表中的字段的增加和删除是很正常的操作,在运营的不断提需求下,这个修改的频率是很高的,那么在flask中如何进行字段的增加和删除呢?下面我来给大家讲讲 使用数据库迁移工具(如 Flask-Migrate等)创建一个新的迁移脚本。这个脚本将包含对数据库

    2024年02月09日
    浏览(47)
  • 基于flask的web应用开发——访问漂亮的html页面以及页面跳转

    本节学习如何在flask应用程序下让用户访问你提前制作好的html页面 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:flask HTML(HyperText Markup Language),即超文本标记语言,是用于创建网页的标准语言。HTML 文件由用标签包围的文本构

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包