flask简单应用-1

目标:
做一个搜索网页,搜索当前路径下是否含有指定关键字的文件,如果有就列出来,没有返回消息

第一步:我们需要先显示一个搜索页面,页面上需要有一个可以输入的对话框,一个按钮执行搜索
建立html模板,此处我创建了find.html
第二步:当点击搜索按钮后,应该要跳转网页,输出搜索结果到网页上,建立一个result.html
第三步:在第二步中应该要有一个函数去遍历文件夹,搜素里面的文件是否有涵盖搜索内容

find.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>search</title>
</head>
<body><form action="/deal_request" method="get"><input type="text" name="q" /><input type="submit" value="搜索" /></form>
</body>
</html>

这里有几个关键的元素

action="/deal_request"  #这里的/deal_request 代表的是准备跳转页面的函数名
method="get"							# 代表请求类型,分 get和post
<input type="text" name="q" />	#创建一个文本框,名字叫q
<input type="submit" value="搜索" />	#创建一个按钮,显示的名字叫做 搜索

result.html

<h1>{{ result }}</h1>

他可以接受变量 result,显示result到网页上
这两个html模板需要放到与脚本同路径下的 templates 文件夹中,否则脚本找不到

OK,接下来是初版:

from flask import request, Flask, render_template
import os# 实例化
app = Flask(__name__)
# 这里是主页面,即第一步显示的网页,有一个对话框和搜索按钮
@app.route('/')
def findMain():return render_template('find.html')# 设定第二步的跳转网页,methods 设定请求类型,这里可以指定一种类型,就不用判断了。主要是类型不同,获取结果的方式不同
@app.route('/deal_request', methods = ['GET', 'POST'])
def deal_request():# get 类型抓取对话框内的内容if request.method == 'GET':find_key = request.args.get("q", "")# post 类型抓取对话框内的内容elif request.method == 'POST':find_key = request.form.get("q", "")# 调用find_result函数,开始遍历文件夹搜索文件find_result = find_file(find_key)# 跳转网页,输出结果return render_template("result.html", result=find_result)def find_file(find_key):allfiles = list()findfiles = list()# 遍历文件夹及子文件夹和文件等for root, dirs, files in os.walk(os.getcwd(), topdown=False):for filename in files:# 将文件路径和文件名结合,生成路径allfiles.append(os.path.join(root, filename))# 判断这个路径是否含关键字if find_key in filename:findfiles.append(os.path.join(root, filename))# 假设没搜到,返回 no found,搜到了,则将搜索到的结果组合成字符串返回if len(findfiles) == 0:result = f"no found file: {find_key}"else:result = "find result:"for x in findfiles:result += f"{x}\n"return resultif __name__ == '__main__':app.run(host="0.0.0.0", port=5000)

我当前文件夹结构:
在这里插入图片描述

脚本运行后,可以看到
在这里插入图片描述

在浏览器打开 http://127.0.0.1:5000 效果:
在这里插入图片描述输入搜索的关键字:py
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【接口技术】课堂word补充习题和讲解(乱序)

DAC & ADC 1&#xff1a;B 梯形电阻网络中的电阻是R和2R&#xff0c;只用了2种阻值 2&#xff1a;B LSBFSR/(2^n)5V / 2^10 5V / 1024 0.0048828125V 4.883mV 3&#xff1a;输入寄存器、DAC寄存器、D/A转换器 如下图所示 中断向量表&#xff0c;CSIP 多个元件互连的例题…

Web前端-HTML(表格与表单)

文章目录 1.表格与表单1.1 概述 2.表格 table2.1 表格概述2.2. 创建表格2.3 表格属性2.4. 表头单元格标签th2.5 表格标题caption&#xff08;了解&#xff09;2.6 合并单元格(难点)2.7 总结表格 3. 表单标签(重点)3.1 概述3.2 form表单3.3 input 控件(重点)type 属性value属性值…

mysql原理--InnoDB的表空间

1.概述 通过前边儿的内容大家知道&#xff0c; 表空间 是一个抽象的概念。 对于系统表空间来说&#xff0c;对应着文件系统中一个或多个实际文件&#xff1b;对于每个独立表空间来说&#xff0c;对应着文件系统中一个名为 表名.ibd 的实际文件。可以把表空间想象成被切分为许许…

Redis设计与实现之事务

一、事务 Redis 通过 MULTI 、DISCARD 、EXEC 和 WATCH 四个命令来实现事务功能&#xff0c;本章首先讨 论使用 MULTI 、DISCARD 和 EXEC 三个命令实现的一般事务&#xff0c;然后再来讨论带有 WATCH 的事务的实现。 因为事务的安全性也非常重要&#xff0c;所以本章最后通过…

Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标

一、前言 通过在通道画面上拾取鼠标按下的坐标&#xff0c;然后鼠标移动&#xff0c;直到松开&#xff0c;根据松开的坐标和按下的坐标&#xff0c;绘制一个矩形区域&#xff0c;作为热点或者需要电子放大的区域&#xff0c;拿到这个坐标区域&#xff0c;用途非常多&#xff0…

VSCode 常用的快捷键和技巧系列(2)

一、如何让VSCode工程树显示图标 第一步&#xff1a;安装 快捷键 CtrlP &#xff0c;输入 ext install vscode-icons &#xff0c;然后点击安装插件 第二步&#xff1a;配置 安装成功后&#xff0c;点击Reload重新加载。 然后配置&#xff0c;当前图标使用VsCode-Icons Go…

devc++添加C++11编译环境

在菜单栏中找到工具&#xff0c;点开 -> 找到编译选项&#xff0c;点击。 进入编译器选项 在编译时加入以下命令前面打上勾&#xff0c;并在编译时加入以下命令的内容框内输入-stdc11。 用C11特有的特性进行测试&#xff0c;看是否成功。

C# 基本桌面编程(二)

一、前言 本章为C# 基本桌面编程技术的第二节也是最后一节。前一节在下面这个链接 C# 基本桌面编程&#xff08;一&#xff09;https://blog.csdn.net/qq_71897293/article/details/135024535?spm1001.2014.3001.5502 二、控件布局 1 叠放顺序 在WPF当中布局&#xff0c;通…

Springboot管理系统数据权限过滤(二)——SQL拦截器

上一节Springboot管理系统数据权限过滤——ruoyi实现方案对数据权限实现方案有了认识&#xff0c;本文将进一步优化权限过滤方案&#xff0c;实现对业务代码零入侵。 回顾上一章中权限方案&#xff1a; 主要是通过注解拦截&#xff0c;拼接好权限脚本后&#xff0c;放到对象变…

代码随想录第三十四天(一刷C语言)|不同路径不同路径II

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、不同路径 思路&#xff1a;参考carl文档 机器人每次只能向下或者向右移动一步&#xff0c;机器人走过的路径可以抽象为一棵二叉树&#xff0c;叶子节点就是终点。 1、确定dp数组&#…

饥荒Mod 开发(十一):修改物品堆叠

饥荒Mod 开发(十)&#xff1a;制作一把AOE武器 饥荒Mod 开发(十二)&#xff1a;一键制作 饥荒中物品栏有限&#xff0c;要拾取的物品有很多&#xff0c;经常装不下要忍痛丢掉各种东西&#xff0c;即使可以将物品放在仓库但是使用不方便&#xff0c;所以可以将物品的堆叠个数设…

优质全套SpringMVC教程

三、SpringMVC 在SSM整合中&#xff0c;MyBatis担任的角色是持久层框架&#xff0c;它能帮我们访问数据库&#xff0c;操作数据库 Spring能利用它的两大核心IOC、AOP整合框架 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想&#xff08;不是设计模式-思想就是我们…