网站开发用到的虚拟机有哪些,wordpress description,h5可以来做网站吗,wordpress主题资源分享一、request参数 request 就是flask中代表当前请求的 request 对象#xff0c;其中一个请求上下文变量(理解成全局变量#xff0c;在视图函数中直接使用可以取到当前本次请求) from flask import request 就是Flask中表示当前请求的request对象#xff0c;request对象中保存…一、request参数 request 就是flask中代表当前请求的 request 对象其中一个请求上下文变量(理解成全局变量在视图函数中直接使用可以取到当前本次请求) from flask import request 就是Flask中表示当前请求的request对象request对象中保存了一次HTTP请求的一切信息。 常用的属性如下
from flask import Flask,requestapp Flask(__name__)# 接口 api
# 127.0.0.1:5000/index?cityshenzhen countrychina 后面的称为查询字符串
app.route(/index,methods[GET,POST])
def index():# request中包含了前端发送过来的所有请求数据# form和data是用来提取请求体的数据的# 通过request.form 可以直接提取请求体中的表单格式的数据是一个类字典的对象# 通过get方法只能拿到多个同名参数的第一个值name request.form.get(name)age request.form.get(age)gender request.data# args是用来提取url中的参数查询字符串city request.args.get(city)print(request.data)return hello name%s,age%s,gender%s,city%s % (name,age,gender,city)if __name__ __main__:app.run(debugTrue)通过request.get(“name”)方法只能拿到多个同名参数的第一个值request.args.get(“city”)是用来提取url中的参数查询字符串
通过request.form.getlist(“name”)可以拿到所有同名参数的值
二、字符编码问题
python2 字符串类型 str “utf-8” “gbk” unicode python3中已经将两者进行了统一
示例 a “中国” # str a u中国 # unicode
“中国” % “sa” 报错 ASCII cannot decode \xxx\xx 解决方法在非英文字符前面加上u u中国 % “sa”
三、上传文件
已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 files 属性访问它们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象但它还有一个 save() 方法这个方法允许你把文件保存到服务器的文件系统上。这里是一个用它保存文件的例子:
from flask import requestapp.route(/upload, methods[GET, POST])
def upload_file():if request.method POST:f request.files[the_file]f.save(/var/www/uploads/uploaded_file.txt)...如果你想知道上传前文件在客户端的文件名是什么你可以访问 filename 属性。但请记住 永远不要信任这个值这个值是可以伪造的。如果你要把文件按客户端提供的文件名存储在服务器上那么请把它传递给 Werkzeug 提供的 secure_filename() 函数:
from flask import request
from werkzeug import secure_filenameapp.route(/upload, methods[GET, POST])
def upload_file():if request.method POST:f request.files[the_file]f.save(/var/www/uploads/ secure_filename(f.filename))myCode:
from flask import Flask,requestapp Flask(__name__)app.route(/upload,methods[POST])
def upload():接收前端传送过来的文件file_obj request.files.get(pic)if file_obj is None:# 表示文件没有传过来return 未上传文件# 否则将文件保存到本地# # 1. 创建一个文件# f open(./demo.png, wb)## # 2. 向文件中写入内容# data file_obj.read()# f.write(data)# # 3. 关闭文件# f.close()# 直接使用上传的文件对象保存file_obj.save(./demo1.png)return 上传成功if __name__ __main__:app.run(debugTrue) 运行结果 最原始的将内容写入文件的方法
# 1. 创建一个文件f open(./1.txt, wb)# 2. 向文件中写入内容try:f.write(hello flask!)except Exception:passfinally:# 3. 关闭文件f.close()with open()的使用
# 上下文管理器
with open(./2.txt,wb) as f:str hello flask# 报错原因# 在这里python3和Python2在套接字返回值解码上有区别。# 解决办法非常的简单只需要用上python的bytes和str两种类型转换的函数encode()、decode()即可## str通过encode()方法可以编码为指定的bytes# 反过来如果我们从网络或磁盘上读取了字节流那么读到的数据就是bytes。要把bytes变为str就需要用decode()方法str str.encode()f.write(str) with的使用
class Foo(object):def __enter__(self):# 进入with语句的时候被with调用print(enter called)def __exit__(self, exc_type, exc_val, exc_tb):# 离开with语句的时候被with调用print(exit called)print(exc_type:%s % exc_type)print(exc_val:%s % exc_val)print(exc_tb:%s % exc_tb)with Foo() as foo:print(hello python)