一、Flask返回html 页面
1. templates 文件夹
(1)html 文件的默认存放
? Flask框架中,框架默认会在名字为templates 的python文件夹中寻找html 文件
(2)修改html 文件的存放位置
? 通过设置Flask() 函数中参数(template_folder,模板文件)修改html 文件的位置,例如将html 文件存在位置修改为user文件夹。
app = Flask(__name__, template_folder="user")
?
2. 加载html 页面
(1)Flask框架通过render_template 函数加载html 页面及模板渲染
render_template("file.html", **context)
? file.html 为需要加载的html 文件,context 是可选参数,对应html 文件中的变量,通过context参数传递html 模块的变量,可选参数的变量名等于模板中的变量名。例如,
? html文件模块为:
? index.html ,位于templates 文件夹下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello world!</title>
</head>
<body>
<h1>
Hello, {{name}}
</h1>
</body>
</html>
? python代码为
? main.py
from flask import Flask, render_template, jsonify, request, redirect
app = Flask(__name__, template_folder="templates")
@app.route("/index")
def login():
userName = reques.args.get("userName", "world!")
return render_template("index.html", name=userName)
(2)静态文件加载
? Flask框架默认会再static 文件夹下搜索静态文件,通过url_for() 函数生成访问url
url_for("static", filename="file.html")
? 这个静态文件在文件系统中的位置是"static/file.html"。
二、HTTP方法
1. 定义url的请求方式
(1)在app.route() 中定义
@app.route("/login", methods=['GET', "POST"])
def login():
if request.method == "GET":
return render_template("login.html")
user = request.form.get("user")
password = request.form.get("password")
if user == "Jason" and password == "123":
return redirect("/index")
else:
error = "用户名或密码错误!"
return render_template("login.html", error=error)
? 通过flask中的request(request.method)获取该url访问的方法。
2. 获取请求数据
(1)POST方法
? flask中的上下文: request
value = request.form.get("key", "defaultValue")
? 通过request.form.get("key", "defaultValue") 获取对应关键字的值,无法获取则值为defaultValue
(2)GET方法
value = request.args.get('key', "defaultValue")
3. request对象
? 来自客户端网页的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导入。
? Request对象的重要属性如下所列:
- Form - 它是一个字典对象,包含表单参数及其值的键和值对。
- args - 解析查询字符串的内容,它是问号(?)之后的URL的一部分。
- Cookies - 保存Cookie名称和值的字典对象。
- files - 与上传文件有关的数据。
- method - 当前请求方法。
4. Flask文件上传
? 在 Flask 中处理文件上传非常简单。它需要一个 HTML 表单,其 enctype 属性设置为“multipart / form-data” ,将文件发布到 URL。URL 处理程序从 request.files[] 对象中提取文件,并将其保存到所需的位置。
? 每个上传的文件首先会保存在服务器上的临时位置,然后将其实际保存到它的最终位置。目标文件的名称可以是硬编码的,也可以从 request.files[file] 对象的filename 属性中获取。但是,建议使用 secure_filename() 函数获取它的安全版本。
? 可以在 Flask 对象的配置设置中定义默认上传文件夹的路径和上传文件的最大大小。
app.config[‘UPLOAD_FOLDER’] 定义上传文件夹的路径 app.config[‘MAX_CONTENT_LENGTH’] 指定要上传的文件的最大大小(以字节为单位)
|