Python第三方库 - Flask(python web框架)

news2024/9/22 19:42:10

1 Flask

1.1 认识Flask

Web Application FrameworkWeb 应用程序框架)或简单的 Web FrameworkWeb 框架)表示一个库和模块的集合,使 Web 应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。

1.2 Pycharm安装与简单测试

1.2.1 安装

Pycharm 安装 Flask 框架
FileSettingsProject: [project name]Project Interpreter

在这里插入图片描述

1.2.2 简单测试

运行下面代码,打开http://127.0.0.1:5000的链接

from flask import Flask
# __name__:代表当前模块,app为类的实例
app = Flask(__name__)

# 创建一个路由和视图函数的映射
@app.route('/')
def hello_world():
   return 'Hello World'

if __name__ == '__main__':
   app.run()
   #app.run(host='0.0.0.0', port=5000)

在这里插入图片描述

1.2.3 Debug模式(热更新)

Debug模式从控制台可以看见
在这里插入图片描述
Pycharm专业版开启方法:

右上角的项目名称 → Edit Configurations → 勾选FLASK_DEBUG选项 → 重启项目

Pycharm社区版开启方法:

# 开启Debug模式 运行时传递参数
app.run(debug=True)
1.2.4 社区版Pycharm建立Flask Project
文件夹作用
static存放静态文件
templates存放模板文件

在这里插入图片描述

2 Flask模块的语法与使用

2.1 Flask路由与路由参数

2.1.1 路由

Flask中的route()装饰器用于将URL绑定到函数,下面代码运行在http://127.0.0.1:5000/hello

@app.route('/hello')
def hello_world():
   return 'hello world'

application对象的add_url_rule()函数也可用于将URL与函数绑定

from flask import Flask
app = Flask(__name__)

def hello_world():
   return 'hello world'

app.add_url_rule('/', 'hello', hello_world)
app.run()
2.1.2 路由参数(动态构建UrL)

通过向规则参数添加变量部分,可以动态构建URL
此变量部分标记为<variable-name>
它作为关键字参数传递给与规则相关联的函数。

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
   return 'Hello %s!' % name

@app.route('/blog/<int:postID>')
def show_blog(postID):
   return 'Blog Number %d' % postID

@app.route('/rev/<float:revNo>')
def revision(revNo):
   return 'Revision Number %f' % revNo

if __name__ == '__main__':
   app.run(debug = True)

在这里插入图片描述

2.1.3 URL构建

url_for()函数用于动态构建特定函数的URL

语法
url_for(函数名,关键字参数)

举例:
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/world')
def hello_world():
   return 'Hello  world!!!'


@app.route('/test/<str>')
def hello_test(str):
   return '%s !!!' % str


@app.route('/other/<oth>')
def hello_other(oth):
   if oth =='world':
      return redirect(url_for('hello_world'))
   else:
      return redirect(url_for('hello_test',  str= '随便拉'))


if __name__ == '__main__':
   app.run(debug = True)

代码解析:
在postman输入http://127.0.0.1:5000/other/world网址,如果查接收的参数与world匹配,则重定向hello_world()函数
否则:
重定向到hello_test()函数

在这里插入图片描述

2.2 Flask与web交互

2.2.1 Flask和表单
html代码

<style>
    form{
        margin:300px auto;
        display:block;
    }
</style>
<body>
      <form action="http://localhost:5000/test" method="post" style="width:300px;height:30px">
        <div class="">
          <label for="exampleFormControlTextarea1" class="form-label">Example textarea</label>
          <textarea class="form-control" id="exampleFormControlTextarea1" rows="3" name="txt"></textarea>
        </div>
         <input class="btn btn-primary" type="submit" value="Submit">
      </form>
</body>

py代码

from flask import Flask, redirect, url_for, request, render_template

app = Flask(__name__)

@app.route('/page')
def index():
    return render_template("1.html")

@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name

@app.route('/test',methods = ['POST', 'GET'])
def test():
    if request.method == 'POST':
        txt = request.form['txt']
        print(txt)
        return redirect(url_for('success', name=txt))
    else:
        return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

在这里插入图片描述

2.2.2 Flask模板

render_template 方法渲染的模板需要在 templates 文件夹下

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
我的模板html内容
  <br />{{ my_str }}
  <br />{{ my_int }}
  <br />{{ my_array }}
</body>
</html>

test.py

from flask import Flask, redirect, url_for, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    # 往模板中传入的数据
    my_str = 'Hello Word'
    my_int = 10
    my_array = [3, 4, 2, 1, 7, 9]
    return render_template('hello.html',
                           my_str = my_str,
                           my_int = my_int,
                           my_array = my_array
                           )

if __name__ == '__main__':
    app.run(debug=True)

在这里插入图片描述

3 参考文档

[1] W3CSchool教程
[2] 社区版Pycharm自建Flask项目
[3] Flask Request对象

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解OOMKilled

背景 今天部署es集群时&#xff0c;pod总是报OOMKilled&#xff0c;于是理解的于是进行了排查 参考文章&#xff1a;https://zhuanlan.zhihu.com/p/519430209?utm_id0 排查&#xff0c;从两方面入手 1.查看node&#xff0c;并通过kubectl describe node&#xff0c;pod所在…

【Java笔记+踩坑】设计模式——原型模式

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客​ 目录 零、经典的克隆羊问题&#xff08;复制10只属性相同的羊&#xff09; 一、传统方案&#xff1…

unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家

Unity3d圆形障碍避障算法&#xff0c;动态避障&#xff0c;静态避障 屎壳郎推屎回娘家 废话不多上图 1&#xff1a;根据&#xff0c;屎和娘家的位置做计算&#xff0c;不管屎在哪里&#xff0c;获取朝向娘家&#xff0c;屎后面一定距离的位置 //获取位置Vector3 GetTraget…

【MySQL架构篇】存储引擎

文章目录 1. 概述2 InnoDB引擎&#xff1a;具备外键支持功能的引擎3. MyISAM引擎&#xff1a;主要的非事务处理存储引擎4. Archive 引擎&#xff1a;用于数据存档5. Blackhole 引擎: 丢弃写操作&#xff0c;读操作会返回空内容6. CSV引擎&#xff1a;存储数据时&#xff0c;以逗…

Linux新建用户、删除用户以及用户之间的切换

Linux新建用户、删除用户以及用户之间的切换 文章目录 Linux新建用户、删除用户以及用户之间的切换1. 新建用户adduser2. 删除用户userdel3. 切换用户su3.1 root用户 -> 普通用户3.2 普通账户 -> 普通账户3.3 普通账户 -> root账户 学习之前&#xff0c;我们需要了解一…

【中国数据】中国基础矢量数据(shp格式)

数据目录 数据举例 数据获取 专栏分享常用的地理空间数据&#xff0c;包括矢量数据、栅格数据、统计数据等&#xff0c;订阅专栏后&#xff0c;从私信查收专栏完整数据包&#xff0c;持续同步更新。

侯捷——2.C++标准库 体系结构与内核分析

侯捷——2.C标准库 体系结构与内核分析 1. C标准库 vs STL C标准库包含STL。标准库都用 std 这个命名空间包装起来。 2. STL体系结构基础介绍 allocators&#xff08;分配器&#xff09;是给containers&#xff08;容器&#xff09;分配内存的。当要创建容器时&#xff0c;必…

C# Onnx Yolov8 Detect 印章 指纹捺印 检测

应用场景 检测文件中的印章和指纹捺印&#xff0c;用于判断文件是否合规&#xff08;是否盖章&#xff0c;是否按印&#xff09; 效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.…

debian 10 安装apache2 zabbix

nginx 可以略过&#xff0c;改为apache2 apt updateapt-get install nginx -ynginx -v nginx version: nginx/1.14.2mysql 安装参考linux debian10 安装mysql5.7_debian apt install mysql5.7-CSDN博客 Install and configure Zabbix for your platform a. Install Zabbix re…

Failed to run the WC DB work queue associated with 错误的解决

步骤&#xff1a; 1、”文件夹选项"中&#xff0c;显示所有隐藏的文件夹及文件&#xff0c;操作后&#xff0c;能看到隐藏的.svn文件夹下的wc.db文件了 2、到官网下载 sqlite 如果是Windows系统&#xff0c;下载Precompiled Binaries for Windows 下红框中版本 3、用sq…

把HexMergeCmd集成到右键菜单里

1. 复制HexMergeCmd到C盘Program Files 2. 双击“add.reg”&#xff0c;添加注册表项 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\HexMergeCmd] "HexMergeCmd" "Icon""C:\\Program Files\\HexMergeCmd\\He…

Leetcode刷题详解——山脉数组的峰顶索引

1. 题目链接&#xff1a;852. 山脉数组的峰顶索引 2. 题目描述&#xff1a; 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3存在i(0 < i < arr.length - 1&#xff09; 使得&#xff1a; arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[…

TensorFlow图像多标签分类实例

接下来&#xff0c;我们将从零开始讲解一个基于TensorFlow的图像多标签分类实例&#xff0c;这里以图片验证码为例进行讲解。 在我们访问某个网站的时候&#xff0c;经常会遇到图片验证码。图片验证码的主要目的是区分爬虫程序和人类&#xff0c;并将爬虫程序阻挡在外。 下面…

计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)

目录 分类一——实体 实体 对等实体 分类二——协议 协议 协议的三要素 分类三——服务 服务 服务访问点 数据包术语 计算机网络体系结构中的专用术语 本篇所讲的专用术语来源于OSI的七层协议体系结构&#xff0c;但也适用于TCP/IP的四层体系结构和五层协议原理体系…

Qt中的单例模式

QT单例类管理信号和槽函数 Chapter1 Qt中的单例模式一、什么是单例模式&#xff1f;二、Qt中单例模式的实现2.1、静态成员变量2.2、静态局部变量2.3、Q_GLOBAL_STATIC 宏实例2 三、使用场景四、注意事项 Chapter2 QT单例类管理信号和槽函数一、创建单例类二、主界面添加组件三、…

原始航片匀色调色方法

使用PhotoRC 2.0软件&#xff0c;对原始航片进行批量匀色&#xff0c;可以自动处理和人机交互&#xff0c;保留exif信息。 软件下载链接&#xff1a; https://pan.baidu.com/s/1Jj4cMpq8xzYvSa1hhozH-g?pwdndfm 提取码&#xff1a;ndfm

Spring Boot中使用JSR-303实现请求参数校验

JSR-303是Java中的一个规范&#xff0c;用于实现请求参数校验。它定义了一组注解&#xff0c;可以应用于JavaBean的字段上&#xff0c;用于验证输入参数的合法性。下面是一些常用的JSR-303注解及其介绍&#xff1a; NotNull&#xff1a;用于验证字段值不能为null。 NotEmpty&a…

RT-Thread 5. ENV添加自定义模块

代码 /* file: hello.c */ #include <stdio.h> #include <finsh.h> #include <rtthread.h> int hello_world(void) {rt_kprintf("Hello, world!\n");return 0; } MSH_CMD_EXPORT(hello_world, Hello world!)/* file: hello.h */ #ifndef _HELLO_H…

03 vi编辑器

vi编辑器的三种模式: 不同的模式下机键动作解释的意义是不一样的 编辑模式 插入模式 末行模式 文件的打开和关闭保存 移动光标

专业135总分400+西安交通大学信息与通信工程学院909/815考研经验分享

今年初试发挥不错&#xff0c;400&#xff0c;专业课135&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备考…