0

Flask简明教程

 1 year ago
source link: https://www.qixinbo.info/2023/03/12/flask/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Flask简明教程 | 数字旗手

电气化、自动化、数字化、智能化、智慧化

(以下内容都来自ChatGPT)

Flask是一个轻量级的Python Web框架。它由Armin Ronacher在2010年创建,是一个开源的软件。Flask的设计理念是简单而灵活,它提供了核心的功能,同时也允许开发者根据自己的需要自由选择和使用扩展。Flask采用Werkzeug作为底层的WSGI工具箱,Jinja2作为模板引擎。与其他Python Web框架相比,Flask的优势在于它的简单性和灵活性,同时还具有可扩展性和可定制性。Flask适用于开发小型Web应用程序,如博客、社交网络、API等。
Flask具有以下特点:

  1. 简单易用:Flask的设计理念是简单而灵活,它提供了核心的功能,使得开发者可以快速地创建Web应用程序。
  2. 轻量级:Flask非常轻量级,它的核心代码只有几千行,因此它可以快速地启动和运行。
  3. 可扩展性:Flask提供了大量的扩展,如ORM、表单验证、用户认证等,可以帮助开发者快速地构建Web应用程序。
  4. 灵活性:Flask非常灵活,开发者可以根据自己的需要选择和使用扩展,也可以自己编写扩展。
  5. 易于学习:Flask的文档非常全面和易于理解,因此开发者可以快速地学习和使用它。
  6. 社区活跃:Flask拥有庞大的社区,开发者可以在社区中获取帮助和支持。Flask有以下基本概念:
  7. 应用(Application):Flask应用是一个包含一组路由和视图函数的Python模块。应用可以通过Flask类的实例化来创建。
  8. 路由(Route):路由是指一个URL和视图函数之间的映射关系。Flask通过装饰器来定义路由。
  9. 视图函数(View Function):视图函数是处理HTTP请求并返回响应的函数。每个视图函数都与一个路由相关联。
  10. 模板(Template):模板是一个包含动态内容的HTML文件。Flask使用Jinja2作为模板引擎。
  11. 请求(Request):请求是指浏览器发送给Web服务器的HTTP请求。Flask通过request对象来处理请求。
  12. 响应(Response):响应是指Web服务器发送给浏览器的HTTP响应。Flask通过response对象来处理响应。
  13. 上下文(Context):Flask使用上下文来共享变量和对象。Flask有两种上下文:应用上下文和请求上下文。
  14. 扩展(Extension):扩展是指Flask提供的一组可选的功能模块,如ORM、表单验证、用户认证等。开发者可以根据需要选择和使用这些扩展。

Flask的用法包括以下方面:

  1. 路由和视图函数:使用装饰器定义路由和视图函数,路由是指一个URL和视图函数之间的映射关系,视图函数是处理HTTP请求并返回响应的函数。例如:@app.route('/hello') def hello(): return 'Hello, World!'
  2. 请求和响应:Flask使用request对象来处理请求,使用response对象来处理响应。例如:from flask import request, make_response
  3. 模板:使用Jinja2作为模板引擎,可以使用模板来生成动态内容的HTML页面。例如:from flask import render_template
  4. 静态文件:可以使用Flask来提供静态文件,如CSS、JavaScript和图像等。例如:app.use('/static', static_folder='static')
  5. 表单处理:Flask提供了WTF表单扩展,可以轻松地处理表单数据。例如:from flask_wtf import FlaskForm
  6. 数据库操作:Flask可以与多种数据库进行集成,如MySQL、PostgreSQL和SQLite等。例如:from flask_sqlalchemy import SQLAlchemy
  7. 用户认证:Flask提供了多个扩展来处理用户认证和授权等问题,如Flask-Login和Flask-Security等。
  8. API开发:Flask可以用来开发RESTful API,可以使用Flask-RESTful扩展来简化API的开发。
  9. 单元测试:Flask提供了测试客户端和测试请求上下文等工具,可以用来编写单元测试。
  10. 部署:Flask应用可以部署到多种Web服务器上,如Apache、Nginx和Gunicorn等。可以使用WSGI协议来与Web服务器进行通信。
    以上是Flask的一些常用用法,具体的用法可以参考Flask官方文档和相关扩展的文档。
  1. 安装 Flask
    使用 pip 命令来安装 Flask:
    pip install Flask
  2. 创建 Flask 应用程序
    创建一个名为 app.py 的 Python 文件,并在其中导入 Flask 模块:
    from flask import Flask

    app = Flask(__name__)
  3. 定义路由
    在 Flask 中,路由是指 Web 应用程序中的 URL。可以使用 Flask 的 route 装饰器来定义路由。
    例如,定义一个名为 index 的路由:
    @app.route('/')
    def index():
    return 'Hello, World!'
  4. 运行应用程序
    在 app.py 文件中添加以下代码:
    if __name__ == '__main__':
    app.run()
    然后在命令行中运行应用程序:
    python app.py
    Flask 应用程序将在本地主机上的默认端口(5000)上运行。
  5. 使用模板引擎
    Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。可以在 Flask 应用程序中创建一个名为 templates 的目录,并在其中创建 HTML 模板文件。
    例如,创建一个名为 index.html 的模板文件:
    <html>
    <head>
    <title>{{ title }}</title>
    </head>
    <body>
    <h1>{{ message }}</h1>
    </body>
    </html>
    可以在 Flask 应用程序中使用 render_template 函数来渲染模板文件:
    from flask import render_template

    @app.route('/')
    def index():
    title = 'Flask Tutorial'
    message = 'Hello, World!'
    return render_template('index.html', title=title, message=message)
  6. 使用表单
    可以使用 Flask-WTF 扩展来处理表单。可以使用 pip 命令来安装 Flask-WTF 扩展:
    pip install Flask-WTF
    例如,创建一个名为 contact.html 的模板文件:
    <html>
    <head>
    <title>Contact Us</title>
    </head>
    <body>
    <h1>Contact Us</h1>
    <form method="POST" action="{{ url_for('contact') }}">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name"><br><br>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email"><br><br>
    <label for="message">Message:</label>
    <textarea id="message" name="message"></textarea><br><br>
    <button type="submit">Send</button>
    </form>
    </body>
    </html>
    可以在 Flask 应用程序中使用 Flask-WTF 扩展来处理表单:
    from flask_wtf import FlaskForm
    from wtforms import StringField, TextAreaField, SubmitField
    from wtforms.validators import DataRequired, Email

    class ContactForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])
    message = TextAreaField('Message', validators=[DataRequired()])
    submit = SubmitField('Send')

    @app.route('/contact', methods=['GET', 'POST'])
    def contact():
    form = ContactForm()
    if form.validate_on_submit():
    # 处理表单提交
    return 'Thank you for your message!'
    return render_template('contact.html', form=form)

完整的示例代码:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

class ContactForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired(), Email()])
message = TextAreaField('Message', validators=[DataRequired()])
submit = SubmitField('Send')

@app.route('/')
def index():
title = 'Flask Tutorial'
message = 'Hello, World!'
return render_template('index.html', title=title, message=message)

@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if form.validate_on_submit():
# 处理表单提交
return 'Thank you for your message!'
return render_template('contact.html', form=form)

if __name__ == '__main__':
app.run()

以上是 Flask 的详细教程,具体操作可以根据需求进行调整。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK