Flask 快速上手指南:打造高效 Web 应用的第一步

06-01 1243阅读

        Flask 作为一款轻量级 Web 框架,在 Python 开发者群体中备受青睐,它简洁灵活,易于上手,能帮助开发者快速搭建功能丰富的 Web 应用。本文将依据 Flask 官方快速入门文档,详细介绍 Flask 的核心知识点,助你迅速开启 Flask 开发之旅。

目录

一、搭建基础应用

二、路由与 URL 构建

(一)基本路由

(二)变量规则

(三)URL 构建

三、请求处理

(一)HTTP 方法

(二)获取请求数据

(三)文件上传

四、模板渲染

五、其他重要功能

(一)会话(Sessions)

(二)消息闪现(Message Flashing)

Flask 快速上手指南:打造高效 Web 应用的第一步
(图片来源网络,侵删)

(三)错误处理


一、搭建基础应用

创建一个最小的 Flask 应用只需寥寥数行代码:

Flask 快速上手指南:打造高效 Web 应用的第一步
(图片来源网络,侵删)
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
    return "

Hello, World!

"

上述代码中,首先导入Flask类,创建其对象app,__name__参数用于指示 Flask 查找模板和静态文件的位置。接着,使用@app.route装饰器将根路径/映射到hello_world函数,该函数返回的内容会在浏览器中显示。保存代码为hello.py(注意避免命名冲突),在命令行输入flask --app hello run即可启动应用,访问http://127.0.0.1:5000/便能看到 “Hello, World!” 的页面。若文件名为app.py或wsgi.py,启动时则无需使用--app参数。

Flask 快速上手指南:打造高效 Web 应用的第一步
(图片来源网络,侵删)

二、路由与 URL 构建

(一)基本路由

通过@app.route装饰器,可轻松定义不同的路由规则,将 URL 与处理函数绑定。例如:

@app.route('/')
def index():
    return 'Index Page'
@app.route('/hello')
def hello():
    return 'Hello, World'

(二)变量规则

在 URL 中添加变量部分,能使应用更具动态性。变量规则通过标记,还可指定参数类型,如。示例如下:

from markupsafe import escape
@app.route('/user/')
def show_user_profile(username):
    return f'User {escape(username)}'
@app.route('/post/')
def show_post(post_id):
    return f'Post {post_id}'

(三)URL 构建

使用url_for()函数构建 URL,相比硬编码 URL,它具有诸多优势,如描述性强、易于修改、自动处理特殊字符转义、生成绝对路径等。例如:

from flask import url_for
@app.route('/')
def index():
    return 'index'
@app.route('/login')
def login():
    return 'login'
@app.route('/user/')
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'))

三、请求处理

(一)HTTP 方法

默认情况下,路由仅响应GET请求。若需处理多种 HTTP 方法,可在@app.route装饰器中通过methods参数指定。如处理登录请求:

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()

(二)获取请求数据

Flask 通过全局的request对象提供客户端发送的数据。可通过request.method获取当前请求方法,使用request.form获取表单数据(POST或PUT请求),request.args获取 URL 参数。示例:

@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None
    if request.method == 'POST':
        if valid_login(request.form['username'], request.form['password']):
            return log_the_user_in(request.form['username'])
        else:
            error = 'Invalid username/password'
    return render_template('login.html', error=error)

(三)文件上传

处理文件上传时,确保 HTML 表单设置enctype="multipart/form-data"属性。通过request.files访问上传的文件,使用save()方法保存到服务器。例如:

from flask import request
from werkzeug.utils import secure_filename
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['the_file']
        file.save(f"/var/www/uploads/{secure_filename(file.filename)}")

四、模板渲染

Flask 集成了 Jinja2 模板引擎,用于生成各种文本文件,尤其是 HTML 页面。使用render_template()方法渲染模板,模板文件通常存放在templates文件夹中。例如:

from flask import render_template
@app.route('/hello/')
@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html', person=name)

在模板中,可使用 Jinja2 的强大功能,如条件判断、循环等,还能访问config、request等对象以及url_for()等函数。同时,模板自动开启 HTML 转义,确保应用安全。

五、其他重要功能

(一)会话(Sessions)

session对象用于在不同请求间存储特定用户的信息,基于签名的 cookie 实现。使用前需设置secret_key,示例如下:

from flask import session
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
@app.route('/')
def index():
    if 'username' in session:
        return f'Logged in as {session["username"]}'
    return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return '''
        
            

''' @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('index'))

(二)消息闪现(Message Flashing)

消息闪现系统用于在请求结束时记录消息,并在后续请求中访问,通常与布局模板结合使用。使用flash()方法记录消息,get_flashed_messages()获取消息。

(三)错误处理

使用abort()函数可提前终止请求并返回错误代码,使用errorhandler()装饰器可自定义错误页面。例如:

from flask import abort, render_template
@app.route('/')
def index():
    return redirect(url_for('login'))
@app.route('/login')
def login():
    abort(401)
@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

        Flask 提供了丰富的功能和简洁的开发方式,通过本文介绍的内容,你已掌握了 Flask 开发的基础。后续可深入学习 Flask 扩展、部署等知识,进一步提升开发能力,打造出更强大的 Web 应用。

最后,提供官网学习网站~

Welcome to Flask — Flask Documentation (3.1.x)

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码