【python】Flask

在这里插入图片描述

文章目录

  • 1、Flask 介绍
  • 2、Flask 实现网页版美颜效果
  • 3、参考

1、Flask 介绍

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它设计简单且易于扩展,非常适合小型项目到大型应用的开发。

以下是一些 Flask 库中常用的函数和组件:

一、Flask 应用对象

Flask(__name__):创建一个 Flask 应用实例。

from flask import Flask
app = Flask(__name__)

二、路由和视图函数

@app.route(path, methods=['GET', 'POST']):装饰器,用于将 URL 路径绑定到视图函数。

@app.route('/')
def hello_world():return 'Hello, World!'

三、请求对象

request:包含有关客户端请求的信息,比如请求参数、表单数据、HTTP 头等。

from flask import request@app.route('/greet', methods=['POST'])
def greet():name = request.form['name']return f'Hello, {name}!'

四、响应对象

make_response(response, *args, **kwargs):创建一个响应对象,可以附加 HTTP 状态码和头信息。

from flask import make_response@app.route('/custom_response')
def custom_response():response = make_response("This is a custom response")response.headers['X-Special-Header'] = 'Some value'return response

五、会话管理

session:一个签名的字典对象,用于跨请求存储信息。

from flask import session@app.route('/login', methods=['POST'])
def login():session['username'] = request.form['username']return 'Logged in successfully!'@app.route('/logout')
def logout():session.pop('username', None)return 'You were logged out'

六、模板渲染

render_template(template_name_or_list, **context):渲染一个模板,并返回生成的 HTML。

from flask import render_template@app.route('/template')
def template_example():return render_template('example.html', name='John Doe')

七、重定向

redirect(location, code=302, response=None):生成一个重定向响应。

from flask import redirect@app.route('/redirect_me')
def redirect_example():return redirect('http://www.example.com')

八、URL 生成

url_for(endpoint, **values):生成 URL,对于动态 URL 特别有用。

from flask import url_for@app.route('/url_for_example')
def url_for_example():return f'The URL for the index is {url_for("index")}'

九、异常处理

@app.errorhandler(code_or_exception):装饰器,用于处理特定异常或 HTTP 状态码。

@app.errorhandler(404)
def page_not_found(e):return 'Sorry, the page you are looking for does not exist.', 404

十、配置

app.config.from_object(config_object) 或 app.config.update(dictionary):加载配置。

class Config:DEBUG = Trueapp.config.from_object(Config)

十一、扩展

Flask 还支持许多扩展,用于数据库交互(如 Flask-SQLAlchemy)、用户认证(如 Flask-Login)、文件上传(如 Flask-WTF)等。

十二、示例完整应用

from flask import Flask, request, render_template, redirect, url_for, session, make_responseapp = Flask(__name__)
app.secret_key = 'your_secret_key'  # 用于会话管理@app.route('/')
def index():return 'Welcome to Flask!'@app.route('/greet', methods=['POST'])
def greet():name = request.form['name']return f'Hello, {name}!'@app.route('/login', methods=['POST'])
def login():session['username'] = request.form['username']return redirect(url_for('profile'))@app.route('/logout')
def logout():session.pop('username', None)return redirect(url_for('index'))@app.route('/profile')
def profile():username = session.get('username', 'Guest')return f'Profile page for {username}'@app.route('/custom_response')
def custom_response():response = make_response("This is a custom response")response.headers['X-Special-Header'] = 'Some value'return responseif __name__ == '__main__':app.run(debug=True)

这些只是 Flask 的一些核心功能,Flask 还有更多高级特性和扩展,可以根据需求进行探索和使用。

2、Flask 实现网页版美颜效果

初始化设计好的网页界面 index.html

在这里插入图片描述

代码实现

import os
from flask import Flask
from flask import request
from flask import render_template
from datetime import timedelta
import cv2value = 20def Beauty(path, filename):img = cv2.imread(path)img_res = cv2.bilateralFilter(img, value, value * 2, value / 2)filename = './out/{}'.format(filename)cv2.imwrite(filename, img_res)# cv2.imshow('img', img_res)# cv2.waitKey(0)return filenameapp = Flask(__name__)
# # 设置静态文件缓存过期时间
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=1)
ALLOWED_EXTENSIONS = set(['bmp', 'png', 'jpg', 'jpeg'])
UPLOAD_FOLDER = r'./static/'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDERdef allowed_file(filename):return '.' in filename and \filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS@app.route('/', methods=['GET', 'POST'])
def index():return render_template('index.html')@app.route('/beauty', methods=['GET', 'POST'])
def beauty():if request.method == 'POST':file = request.files['image']print(file)if file and allowed_file(file.filename):path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)file.save(path)output = Beauty(path, file.filename)print(output)return render_template('index.html', output = output)else:return render_template('index.html', alert = '文件类型必须是图片!')else:return render_template('index.html')if __name__ == '__main__':app.run(debug=True)

运行显示结果如下

 * Running on http://127.0.0.1:5000

我们在浏览器中打开此链接

在这里插入图片描述

选择文件,点击上传,默认的文件夹路径配置为 UPLOAD_FOLDER = r'./static/',可以将图片提前放到配置的文件夹目录下

显示添加成功后

在这里插入图片描述

可以在保存的目录下查看结果,filename = './out/{}'.format(filename),可以看到保存在的是在 out 文件夹下

输入

在这里插入图片描述

输出

在这里插入图片描述

输入

在这里插入图片描述

输出

在这里插入图片描述

输入

在这里插入图片描述

输出

在这里插入图片描述

磨皮效果明显

3、参考

  • 十来行代码,用Python做一个迷你美图秀秀

  • 代码目录:
    链接: https://pan.baidu.com/s/11ALwPkknz61V5ugXLznThQ?pwd=596q
    提取码: 596q

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

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

相关文章

产品经理如何使用项目管理软件推进复杂项目按时上线

前言 相信很多产品同学或多或少都有过这样的经历:平时没有听到任何项目延期风险,但到了计划时间却迟迟无法提测……评审时没有任何argue,提测后发现开发的功能不是自己想要的……费劲九牛二虎之力终于让项目上线了,然而发现成果达…

新系统如何进行模型环境配置

在机器学习和深度学习中,一个良好的开发环境能够显著提高工作效率。本篇博客将详细介绍如何在新的Linux系统(以Ubuntu为例)上进行模型环境的配置,包括基础系统设置、Python虚拟环境搭建、常用库的安装以及GPU驱动和CUDA的安装等。…

OpenAI大事记;GPT到ChatGPT参数量进化

目录 OpenAI大事记 GPT到ChatGPT参数量进化 OpenAI大事记 GPT到ChatGPT参数量进化 ChatGPT是从初代 GPT逐渐演变而来的。在进化的过程中,GPT系列模型的参数数量呈指数级增长,从初代GPT的1.17亿个参数,到GPT-2的15 亿个参数,再到 GPT-3的1750 亿个参数。模型越来越大,训练…

Am I Isolated:一款安全态势基准测试工具

基于Rust的容器运行时扫描器作为一个容器运行,检测用户容器运行时隔离中的漏洞。 它还提供指导,帮助用户改善运行时环境,以提供更强的隔离保证。 容器的现状是它们并不包含(隔离)。 容器隔离的缺失在云原生环境中有…

SQLite的BLOB数据类型与C++二进制存储学习记录

一、BLOB数据类型简介 Blob(Binary Large Object)是一种用于存储二进制数据的数据类型,在数据库中常用于存储图片、音频和视频等大型(大数据量)的二进制数据[1-2]。需要注意的是,SQLite中BLOB类型的单对象最…

编写一个基于React的聊天室

前言 此前已经编写了一版后端的im,此次就用其作为服务端,可查看参考资料1 代码 使用WebStorm创建React项目 安装依赖包 PS C:\learn-demo\front\chatroom> npm installadded 183 packages, and audited 184 packages in 16s43 packages are looki…

Javascript事件循环流程分析

基础概念 事件循环(Event Loop):事件循环是JavaScript运行时环境中的一个循环机制,它不断地检查调栈用和任务队列。当调用栈为空时,事件循环会首先检查微任务队列,并执行其中的所有任务。只有当微任务队列…

解决使用Golang的email库发送qq邮件报错short response,错误类型为textproto.ProtocolError

问题阐述 使用email库发送QQ邮件,采用587端口: package mainimport ("fmt""net/smtp""github.com/jordan-wright/email" )func SendEmail(sendTo string, subject string, body string) (err error) {e : email.NewEmai…

题目:Wangzyy的卡牌游戏

登录 - XYOJ 思路: 使用动态规划,设dp[n]表示当前数字之和模三等于0的组合数。 状态转移方程:因为是模三,所以和的可能就只有0、1、2。等号右边的f和dp都表示当前一轮模三等于k的组合数。以第一行为例:等号右边表示 j转…

【支付行业-支付系统架构及总结】

记得第一次看埃隆马斯克(Elon Musk)讲第一性原理的视频时,深受震撼,原来还可以这样处理复杂的事务。这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付…

模块化沙箱:深信达如何为数据安全提供全方位保护

在数字化时代,网络安全已经成为企业和个人不可忽视的重要议题。随着网络攻击手段的日益复杂和多样化,传统的安全防护措施已经难以应对日益严峻的安全挑战。在这样的背景下,模块化沙箱技术应运而生,成为网络安全领域的新宠。今天&a…

基于单片机的观赏类水草养殖智能控制系统的设计(论文+源码)

1总体设计 通过需求分析,本设计观赏类水草养殖智能控制系统的总体架构如图2.1所示,为系统总体设计框图。系统采用STM32单片机作为系统主控核心,利用DS18B20温度传感器、TDS传感器、CO2传感器、光敏传感器实现水草养殖环境中水温、CO2浓度、T…

基于Jeecgboot3.6.3vue3的flowable流程增加online表单的审批支持(四)online表单字段控制

更多技术支持与服务请加入我的知识星球或加我微信,名称:亿事达nbcio技术交流社区https://t.zsxq.com/iPi8F 1、首先需要配置操作规则,如下: 配置这个节点的一些字段属性,上面就是有两个隐藏了,一个可以编辑,上面的规则采用json格式保存到数据库里 2、取出这些规则 //根…

分享:文本转换工具:PDF转图片,WORD转PDF,WORD转图片

前言 鉴于网上大多数在线转换工具要么需要收费,要么免费后但转换质量极差的情况,本人开发并提供了PDF转图片,WORD转PDF,WORD转图片等的文本转换工具。 地址 http://8.134.236.93/entry/login 账号 账号:STAR001&a…

星环大数据平台--TDH部署

1.1 准备一台虚拟机 正常安装一台新的虚拟机, 内存16G,cpu8核,硬盘50G 1.2 安装前系统配置改动 修改/etc/hosts文件,确保hostname该文件包含节点的hostname和IP地址的映射关系列表。 hostname由数字、小写字母或“-”组成&am…

Visual Studio2022版本的下载与安装

1-首先打开微软的官网,下面就是链接 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux免费下载 Visual Studio IDE 或 VS Code。 在 Windows、Mac 上试用 Visual Studio Professional 或企业版。https://visualstudio.microsoft.com/zh-hans/downloads/?…

如何去除图片水印?快来试试这4种图片去水印方法!

去除图片水印是一项普遍存在的图像处理需求,它旨在消除水印对图片视觉效果的干扰,让我们能够更自由、更美观、更专业地使用图片资源。接下来,我们将介绍四种有效的去除图片水印的方法和工具,它们各自具有独特的优势和适用场景。 方…

A day a tweet(sixteen)——The better way of search of ChatGPT

Introducing ChatGPT search a/ad.及时的/及时地 ChatGPT can now search the web in a much better way than before so you get fast, timely a.有关的(relative n.亲戚,亲属;同类事物 a.比较的;相对的) answers with link…

selenium+chromedriver下载与安装

安装selenium 使用pip安装selenium: pip install selenium安装成功: 安装WebDriver 根据你使用的浏览器下载相应的 WebDriver。 Chrome:下载地址Firefox:下载地址Edge:下载地址Safari:下载地址 1、c…

跨子网的WinCC客户机/服务器如何实现通讯?

为了更有效地利用有限的IP地址,为了减少广播对网络带宽的占用从而提高带宽,为了实现在不同子网中应用不同的安全策略从而提高网络安全性,现场通常要求划分子网,将安全等级要求不同的计算机安置在不同的子网中,分开管理…