记得有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 上传文件,视图的更多相关文章

  1. flask上传文件到指定路径

    flask上传文件到指定路径 项目结构如下: 首先是:视图函数uload_file.py,代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- fro ...

  2. FLask上传文件

    目录 Flask上传文件 改进上传 上传进度条 一个更简便的方案 Flask上传文件 文件上传的基本原理实际上很简单,基 本上是: 一个带有 enctype=multipart/form-data 的 ...

  3. flask 上传文件

    flask upload 近日在学习python,接触到了flask框架,刚好客户有个需求,需要在网页上传一个python 代码的zip包,然后使用docker 容器运行这个zip里面的程序,输出结果 ...

  4. 记一次flask上传文件返回200前端却504的问题

    前言 好久没写了, 主要是太忙了, 本篇记一下今天解决的一个问题吧, 耗了我大半天的时间才解决 问题 今天在调试代码时, 发现了一个诡异的问题, 我之前写了一个接口, 作用是接收上传的文件, 因为这个 ...

  5. flask上传文件时request.files为空的解决办法

    在做上传文件的时候遇到request.files是空 原因在于html中的表单form没有指明 enctype="multipart/form-data" <form met ...

  6. 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: ...

  7. Flask -- 请求、上传文件、Cookies

    请求对象 from flask import request request.method #值为form表单提交的method 'POST'. 'GET'等 #如果值为'POST'或'PUT',则可 ...

  8. flask jQuery ajax 上传文件

    1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...

  9. Ajax+Python flask实现上传文件功能

    HTML: <div > <input type="file" name="FileUpload" id="FileUpload&q ...

  10. flask插件系列之flask_uploads上传文件

    前言 flask可以实现上传文件和下载文件的基本功能,但如果想要健壮的功能,使用flask_uploads插件是十分方便的. 安装 pip install flask_uploads 基本使用 # e ...

随机推荐

  1. 关于RS485通讯TVS器件选择的经验

    先说经验结论 如果你的RS485用于频繁热拔插, 比如作为手持终端使用, 且手持器与目标板非隔离, 那么使用6.8CA可能是更好的选择. 因为有热拔插会产生浪涌, 而且在非隔离的场合有些工业设备接地也 ...

  2. 03Java学习_注释和代码规范

    注释和代码规范 目录 注释和代码规范 注释 注释介绍 单行注释 多行注释 文档注释 代码规范 注释 注释介绍 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性):注释 是一个程序员必 ...

  3. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-29-处理日历时间控件-中篇

    1.简介 上一篇的日历时间控件宏哥介绍的比较传统也是很常见的.宏哥不能说它很low,但是相比较一些高端.大气.上档次的日历时间控件,结果就一目了然了:确实很low. 2.被测网站 2.1高大上日历时间 ...

  4. 信创就用国产的 Solon Java Framework,v2.6.0 发布

    先吹牛! 在 v2.6 这个新的里程碑节点,Solon 又完成了几件惊天大事(每一件,都是经历了漫长时间打磨与积累): (1)Solon Native,有了第一个开源案例:dromara/neutri ...

  5. h5移动端使用video实现拍照、上传文件对象、选择相册,做手机兼容。

    html部分 <template> <div class="views"> <video style="width: 100vw; heig ...

  6. vue的响应式原理:依赖追踪

    在明白原理之前,我们有很多表面现象.使用场景需要记忆.明白了原理后,你会发现它们已经不需要记了,因为从原理出发,你自己都能把它们推导出来,一切是那么的自然而然.感觉就是:这还用记吗?很明显嘛! 之前我 ...

  7. AtCoder_abc330

    AtCoder_abc330 比赛链接 A - Counting Passes A题链接 题目大意 给出\(N\)个数\(a_1,a_2,a_3\cdots,a_N\),和一个正整数\(L\).输出有 ...

  8. AtCoder_abc326

    T1 2UP3DOWN 简单的if判断,做题一分钟,翻译十分钟... 代码: #include<bits/stdc++.h> using namespace std; int main() ...

  9. 校验码——循环校验码CRC,海明校验码

  10. JS对后端响应的long类型数据处理精度丢失问题

    1.数据库的数据 2.前端拿到的数据 前端帮我们进行四舍五入了,这并不是我想要的 3.解决办法 把后端响应的数据long类型转成string类型,可以使用Stream流的方式或者for循环的方式,对响 ...