flask 上传文件,视图
记得有template
'''
导入flask类。该类的实例将会成为我们的wsgi应用
__name__是一个适用于大多数情况的快捷方式,有了这个参数,flask才能知道在那里找到模板和静态文件等东西
然后我们使用route()装饰器来告诉flask触发函数的url
函数返回需要在用户浏览器中显示的信息。默认的内容类型是html
'''
import os
'''
路由
使用route()装饰器来把函数绑定到url
'''
''''
Http方法
web应用使用不同的http方法来处理url。
缺省晴空下,一个路由只回应get请求。可以使用route()装饰器的methods参数来处理不同的http方法
'''
from flask import Flask, request, jsonify, redirect, url_for, flash, render_template
from werkzeug.utils import secure_filename
app = Flask(__name__)
# @app.route('/')
# def hello_world():
# return 'Hello, World!'
"""
给路由传参示例
有时我们需要将同一类url映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的个人信息
"""
# @app.route('/user/<user_id>')
# def user_info(user_id):
# return 'hello %s' % user_id
"""
路由传参的参数默认当作string处理,也可以指定参数的类型
"""
@app.route('/user/<int:user_id>')
def user_ino(user_id):
return 'hello %d' % user_id
"""
指定请求方式
在falsk中,定义一个路由,默认的请求方式为:
get/option/head
如果想添加请求方式,那可以如下指定
"""
@app.route('/demo1/',methods=['get','post'])
def demo1():
"直接从请求中取到请求方式并返回"
return request.method
'''
返回json
在使用flask写一个接口时候需要给客户端返回json数据,在falsk中可以直接使用jsonify生成一个json的响应
'''
@app.route('/demo3/')
def demo3():
json_dict = {
'id':123,
'name':'李四'
}
return jsonify(json_dict)
'''
重定向
'''
# 重定向
@app.route('/demo4/')
def demo4():
return redirect(url_for('demo3'))
'''
自定义状态码
在falsk中,可以很方便的返回自定义状态码
'''
@app.route('/demo8/')
def demo8():
return '状态码为 666', 666
'''
请求钩子
在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如
在请求开始时,建立数据库链接
在请求开始时,根据需求进行权限校验
在请求结束时,指定数据的交互格式
falsk 支持如下四种请求钩子
before_first_request:在处理第一个请求前执行
before_request:在每次请求前执行,如果在某修饰的函数中返回了一个响应,视图函数建不再被调用
after_request:如果没有抛出错误,在每次请求后执行,接受一个参数:视图函数作出的响应,在此函数中可以对响应值在返回之前做最后一步修改处理,需要将参数中的响应在此参数中进行返回
teardown_request:在每次请求后执行,接受一个参数:错误信息,如果有相关错误抛出
'''
# 在第一次请求之前调用,可以在此方法内部做一些初始化操作
# @app.before_first_request
# def before_first_request():
# print("before_first_request")
#
#
# # 在每一次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验
# # 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数
# @app.before_request
# def before_request():
#
# print("before_request")
#
#
# # 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理
# @app.after_request
# def after_request(response):
# print("after_request")
# response.headers["Content-Type"] = "application/json"
# return response
#
#
# # 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
# @app.teardown_request
# def teardown_request(e):
# print("teardown_request")
@app.route('/')
def index():
return 'index'
'''
上传文件
'''
@app.route('/upload/', methods=['POST', 'GET'])
def upload():
if request.method == 'POST':
f = request.files['file']
basepath = os.path.dirname(__file__) # 当前文件所在路径
upload_path = os.path.join(basepath, r'.\static\uploads', secure_filename(f.filename))
f.save(upload_path)
return redirect(url_for('upload'))
return render_template('up.html',name='cf')
'''
url_for
给指定的函数构造url
访问静态文件(css/javascript等),只要在你的包中或是模块的所在目录中创建一个名为stagic的文件夹,在应用中使用/stagic即可访问
'''
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0', port=9100)
flask 上传文件,视图的更多相关文章
- flask上传文件到指定路径
flask上传文件到指定路径 项目结构如下: 首先是:视图函数uload_file.py,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- fro ...
- FLask上传文件
目录 Flask上传文件 改进上传 上传进度条 一个更简便的方案 Flask上传文件 文件上传的基本原理实际上很简单,基 本上是: 一个带有 enctype=multipart/form-data 的 ...
- flask 上传文件
flask upload 近日在学习python,接触到了flask框架,刚好客户有个需求,需要在网页上传一个python 代码的zip包,然后使用docker 容器运行这个zip里面的程序,输出结果 ...
- 记一次flask上传文件返回200前端却504的问题
前言 好久没写了, 主要是太忙了, 本篇记一下今天解决的一个问题吧, 耗了我大半天的时间才解决 问题 今天在调试代码时, 发现了一个诡异的问题, 我之前写了一个接口, 作用是接收上传的文件, 因为这个 ...
- flask上传文件时request.files为空的解决办法
在做上传文件的时候遇到request.files是空 原因在于html中的表单form没有指明 enctype="multipart/form-data" <form met ...
- windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads'的解决方法
在浏览器中输入时,出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads' http://127.0.0.1: ...
- Flask -- 请求、上传文件、Cookies
请求对象 from flask import request request.method #值为form表单提交的method 'POST'. 'GET'等 #如果值为'POST'或'PUT',则可 ...
- flask jQuery ajax 上传文件
1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...
- Ajax+Python flask实现上传文件功能
HTML: <div > <input type="file" name="FileUpload" id="FileUpload&q ...
- flask插件系列之flask_uploads上传文件
前言 flask可以实现上传文件和下载文件的基本功能,但如果想要健壮的功能,使用flask_uploads插件是十分方便的. 安装 pip install flask_uploads 基本使用 # e ...
随机推荐
- .NET8依赖注入新特性Keyed services
什么是Keyed service Keyed service是指,为一个需要注入的服务定义一个Key Name,并使用使用Key Name检索依赖项注入 (DI) 服务的机制. 使用方法 通过调用 A ...
- 【NOI2014】 魔法森林---解题报告
传送门 题目大意 给定 \(n\) 个点和 \(m\) 条边.每条边包含起点终点和两个精灵的最低限制,求最少需要携带的精灵数量. 题目解析 直接套 LCT 板子 将所有边按照进行升序排序,从小到大将边 ...
- Python 之 Numpy 框架入门
NumPy 目录 NumPy 基础使用 基本数据类型 创建基本数组 数组属性 数组生成 zeros.ones.empty 数组生成 numpy.zeros numpy.ones numpy.empty ...
- AntDesignBlazor示例——创建列表页
本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/AntDesignDemo 1. 学习目标 使用 ...
- 【GKCTF 2020】ez三剑客
[GKCTF 2020]ez三剑客 收获 gopher协议SSRF 多利用github搜索已存在的函数漏洞 CMS审计的一些方法 1. ezweb 打开题目给了一个输入框,能够向输入的url发送htt ...
- nacos 安装和使用
Nacos 是阿里巴巴开源项目,用于构建微服务应用的服务发现.配置管理和服务管理. 在微服务项目中不同模块之间服务调用时,实现服务注册与发现. Nacos 使用: Nacos 是java开发的,依赖 ...
- Socket.D 网络应用协议,v2.1.6 发布
有用户说,"Socket.D 之于 Socket,尤如 Vue 之于 Js.Mvc 之于 Http" 与其它协议的简单对比 对比项目 socket.d http websocket ...
- 01 MyBatis第一个应用程序
1.MyBatis是什么? mybatis是一个基于java的持久层框架. 2.什么是持久化 数据由瞬态状态变为持久状态. 3.持久层: 完成持久化工作的代码块. -- DAO层,将数据存到数据库 4 ...
- 华企盾DSC邮件服务器测试连接提示Server has closed the connection(端口不对)
解决方法:邮件服务器端口填错了,应该是smtp.126.com:s465,或者smtp.126.com:s587 其他邮箱同理.
- Python 猫的 2023 年终回顾
2023 年是 Python猫 创办的第 5 年,2024 年已经到来了,我们照例做一个简短的年终回顾吧. 1.30000 订阅与 200 原创. 2020 的年终总结时,公众号订阅数刚破 20000 ...