Flask 入门3:Flask 请求上下文与请求

1. 前言

Flask 在处理请求与响应的过程:
Flask 入门3:Flask 请求上下文与请求_第1张图片

首先我们从浏览器发送一个请求到服务端,由 Flask 接收了这个请求以后,这个请求将会由路由系统接收。然后在路由系统中,还可以挂入一些 “勾子”,在进入我们的 viewFunction 以前做一些预处理。即产生一个 request 对象,可以获取一些变量、cookie等参数,再传入 viewFunction 里面做一个进一步的处理。处理完了以后,一般上不需要直接去产生一个 response,而是通过 render_template 传给 Flask。

2. login

login.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<h1>方法:{{ method }}h1>
<form method="post">
    <div>
        <input type="text"
               name="username"
               placeholder="User name" />
    div>
    <div>
        <input type="text"
               name="password"
               placeholder="Password" />
    div>
    <input type="submit">
form>
body>
html>
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
    else:
        username = request.args['username']

    return render_template('login.html',method=request.method)

可直接使用浏览器传值:
Flask 入门3:Flask 请求上下文与请求_第2张图片

3. 上传文件

@app.route('/upload', methods=['GET', 'POST'])
def uploads():
    if request.method == 'POST':
        f = request.files['file']
        basepath = path.abspath(path.dirname(__file__))  # 获取当前绝对路径
        upload_path = path.join(basepath, 'static/uploads')
        f.save(upload_path, secure_filename(f.filename))

        return redirect(url_for('uploads'))
    return render_template('upload.html')

upload.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload new Filetitle>
head>
<body>
<h1>文件上传示例h1>
<form action=""
      method="post"
      enctype="multipart/form-data">
  <p>
    <input type="file"
           name="file">
    <input type="submit"
           value="Upload">
  p>
form>
body>
html>

Flask 入门3:Flask 请求上下文与请求_第3张图片

4. errorhandler

对错误进行监控:

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404


@app.errorhandler(400)
def bad_request(error):
    return render_template('400.html'), 400

404.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<h1>404h1>
<h2>很抱歉!h2>
<p>您访问的页面并不存在p>
body>
html>

400.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<h1>400h1>
<h2>很抱歉!h2>
<p>您发送了一个错误的请求p>
body>
html>

你可能感兴趣的:(python,flask,python,后端)