一、Flask 简介和安装

Flask 是一个使用 Python 轻量级Web应用框架的编写。Flask因其轻量级和灵活性而被广泛应用于快速构建各种Web应用程序。Flask自带开发服务器和调试工具,可以通过扩展支持数据库访问的多种形式。

安装 Flask 很简单,只需使用pip工具。最新版本的Flaskk可以通过在命令行中输入以下命令来安装。:

 pip install Flask 

安装完成后,您可以开始创建第一个Flask Web应用程序。

构建基础Flask应用结构

合理的组织项目结构在任何编程任务开始之前都是非常重要的。Flask中,最简单的项目只需要包含一个Python文件。下面是Flask应用结构最基本的代码:

 from flask import Flask app = Flask(__name__) @app.route("/") def home(): return "Welcome to my Flask app!" if __name__ == "__main__": app.run() 

代码中的@app.route("/")是一种装饰品,它告诉Flask什么样的URL可以触发我们的函数。用户访问网站的主页上将显示home函数返回的字符串。

使用if __name__ == "__main确保在我们执行Python文件时,Web服务器才能启动。app.run()启动一个内置的简易Web服务器。这种服务器在开发环境中非常方便,但是更强大的Web服务器通常用于生产环境。

路由和视图函数三

路由由由Python装饰器定义的Flask应用程序,它将URL与执行特定业务逻辑的函数联系起来。这就是所谓的视图函数。

为了处理不同的HTTP请求,可以设置不同的URL规则,下面的例子将显示如何设置和使用不同的路由。

 @app.route("/hello") def hello(): return "Hello, Flask!" @app.route("/user/<string:name>") def show_user_profile(name): return f"User {name}" @app.route("/post/<int:post_id>") def show_post(post_id): return f"Post 83692" 

在代码中定义了三个路由:hello"、"/user/<string:name>"和"/post/<int:post_id>"。通过指定不同的路径参数,可以创建更灵活的URL处理动态路由。

模板和静态文件

动态页面很少只回到简单的字符串。Flask可以通过Jinja2模板引擎支持模板继承,将HTML代码抽离成文件,使代码结构更加清晰。

下面是一个使用Flask渲染模板的例子。第一,你需要在应用程序的根目录下创建一个名为“templates“文件夹,并在其中创建一个HTML文件。

 # hello.html <html> <head> <title>Hello</title> </head> <body> <h1>Hello, {{ name }}!</h1> </body> </html> 

接着,render_template函数渲染模板可用于Flask应用程序:

 from flask import render_template @app.route("/greet/<name>") def greet(name): return render_template("hello.html", name=name) 

访问"/greet/<name>"路由时, 'hello.html' 将渲染模板文件, 'name' 将变量传递到模板中。

表单处理和请求数据

Web应用程序通常需要从用户那里处理数据。在Flask中,请求对象可以访问请求数据。下面是一个简单的例子,展示了如何在Flask中处理表格提交。

第一,创建一个简单的表单HTML文件:

 # form.html <html> <head> <title>Login</title> </head> <body> <h2>Login</h2> <form method="post" action="/login"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br> <input type="submit" value="Login"> </form> </body> </html> 

接着,在Flask应用程序中创建相应的路由来处理GET和POST要求:

 from flask import request @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] return f'Username: {username}, Password: {password}' return render_template('form.html') 

上述代码中的'/login“路由支持GET和POST方法。当方法为GET时,渲染并返回表单页面。提交表单时,请求方法变为POST,从表单中获取用户名和密码,并将其返回给客户端。