Flask 快速上手教程 — 了解与基本使用

Flask 快速上手教程 --- 了解与基本使用

这篇博客是我刚接触 flask,研究文档时的一些记录与体会,希望对各位刚接触 flask 的朋友有所帮助。

且在此篇后,我还会另写一篇关于纯后端的 flask 教程,介绍一下如何使用 flask 创建一个较为完善的纯后端的服务。

在阅读下面的内容前,读者应该具有基础的python知识,且配置好了python环境。

安装 flask:

pip install flask

一、最小应用

一个基于 flask 的最小应用应当如下:

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
  1. 首先我们导入了 Flask 类。该类的实例将会成为我们的 WSGI 应用。(WSGI 提供了一个规范,使得不同的 Web 应用程序和服务器可以进行交互,从而实现了在不同环境中运行同一个应用程序的可能性。)

  2. 接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。 __name__ 是一个适用于大多数情况的快捷方式。有了这个参数, Flask 才能知道在哪里可以找到模板和静态文件等东西。(__name__: 表示当前模块的名字。如果是主模块(即直接运行的脚本),其值为 __main__

  3. 然后我们使用 route() 装饰器来告诉 Flask 触发函 数的 URL 。

  4. 函数返回需要在用户浏览器中显示的信息。默认的内容类型是 HTML ,因此 字符串中的 HTML 会被浏览器渲染。

把它保存为 hello.py 或其他类似名称。请不要使用 flask.py 作为应用名称,这会与 Flask 本身发生冲突。

可以使用 flask 命令或者 python -m flask 来运行这个应 用。你需要使用 --app 选项告诉 Flask 哪里可以找到应用(如果文件名为 app.py 或者 wsgi.py ,那么不需要使用 --app):

flask --app hello run
或
python hello.py

现在在浏览器中打开 http://127.0.0.1:5000/ ,应该可以看到 Hello World! 字样。

如果在使用 flask 命令启动时,还可以添加 --debug 开启调试模式,这样在发生错误的时候,在页面上可以看到错误提示。

二、路由及HTTP方法

1、路由

  1. 基础使用
    flask 中使用@app.route()来配置路由,从上面的例子应该看出,当我们访问对应路由的时候,该配置能将请求交由对应函数进行处理,函数的返回值即为请求的响应值:

    python 复制代码
    @app.route('/')
    def index():
        return 'Index Page'
    
    @app.route('/hello')
    def hello():
        return 'Hello, World'
  2. 路由传参
    有时候参数需要通过路由传递,以CSDN的个人主页为例,不同用户的个人主页的URL不同之处在于路由中最后部分,为了能配置并接收参数,可以在配置路由的时候使用<>表示动态路由参数,并使用函数形参接收:

    python 复制代码
    from markupsafe import escape
    
    @app.route('/user/<username>')
    def show_user_profile(username):
        # show the user profile for that user
        return f'User {escape(username)}'
    
    @app.route('/post/<int:post_id>')
    def show_post(post_id):
        # show the post with the given id, the id is an integer
        return f'Post {post_id}'
    
    @app.route('/path/<path:subpath>')
    def show_subpath(subpath):
        # show the subpath after /path/
        return f'Subpath {escape(subpath)}'

    并且,通过使用 converter:variable_name ,可以选择性的加上一个转换器,为变量指定规则:

  3. URL 构建
    url_for() 函数用于构建指定函数的 URL。它把函数名称作为第 一个参数。它可以接受任意个关键字参数,每个关键字参数对应 URL 中的变量。 未知变量将添加到 URL 中作为查询参数:

    python 复制代码
    from flask import url_for
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return 'index'
    
    @app.route('/login')
    def login():
        return 'login'
    
    @app.route('/user/<username>')
    def profile(username):
        return f'{username}\'s profile'
    
    with app.test_request_context():
        print(url_for('index'))
        print(url_for('login'))
        print(url_for('login', next='/'))
        print(url_for('profile', username='John Doe'))

    输出:

    /
    /login
    /login?next=/
    /user/John%20Doe
    

    多用于使用静态资源文件等。

  4. HTTP方法
    @app.route默认只匹配 GET 请求,而如果想要能够匹配别的HTTP方法,或者多种HTTP方法,则可这么做:

    python 复制代码
    from flask import request
    
    @app.route('/login', methods=['GET', 'POST'])
    def login():
        if request.method == 'POST':
            return do_the_login()
        else:
            return show_the_login_form()

    其中导入request后,可以通过其获取当前请求的请求方式,如果携带有请求体,则还可以通过它拿到传参。

相关推荐
爱上语文17 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people21 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
waterHBO1 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
AIAdvocate4 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
罗政6 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
FreakStudio6 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
拾光师7 小时前
spring获取当前request
java·后端·spring
redcocal8 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘