Python web实战 | 用 Flask 框架快速构建 Web 应用【实战】

这篇具有很好参考价值的文章主要介绍了Python web实战 | 用 Flask 框架快速构建 Web 应用【实战】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flask web开发实战,python,前端,flask,webkit


 概要

Python web 开发已经有了相当长的历史,从最早的 CGI 脚本到现在的全栈 Web 框架,现在已经成为了一种非常流行的方式。

Python 最早被用于 Web 开发是在 1995 年(90年代早期),当时使用 CGI 脚本编写动态 Web 页面。2004 年 Django 框架发布,它是一个高度模块化的框架,提供了许多开箱即用的功能,使得 Web 开发更加容易和快速。Flask 框架于 2010 年发布,是一个轻量级的框架,它提供了更少的默认功能,但也更灵活,允许开发者根据需要添加或删除功能。


1. 什么是 Flask?

Flask 是一款 Python 的轻量级 Web 框架,它的特点是简单易用、灵活性高。Flask 框架可以快速搭建 Web 应用程序,是一个很好的选择。Flask 框架的核心思想是 WSGI(Web Server Gateway Interface),它定义了 Web 服务器和 Web 应用程序之间的通信协议。

1.1 Flask 的优势

  • 简单易用:Flask 框架的 API 简单易用,开发者能够快速上手。MVC设计模式。

  • 灵活性高:Flask 框架的扩展性高,可以根据实际需求进行扩展。

  • 轻量级:Flask 框架的代码量小,运行速度快。

  • 文档丰富:Flask 框架的文档非常详细,开发者能够轻松查找所需信息。

1.2 Flask 的缺点

  • 轻量级:Flask 框架的轻量级也是它的缺点之一,它的功能相对有限,需要自己进行扩展。

  • 不适合大型应用程序:Flask 框架适合小型应用程序,对于大型应用程序来说,可能会出现性能瓶颈。这时可以考虑Django。

1.3 Flask 的基础组件

Flask 框架由以下几个基础组件组成:

  • 路由:定义 URL 和视图函数之间的映射关系。

  • 视图函数:处理请求并返回响应。

  • 模板:生成 HTML 页面。

  • 表单:处理用户提交的数据。

  • 扩展:实现 Flask 框架的扩展功能。

2. 基础使用

2.1 安装 Flask

在开始使用 Flask 之前,需要先安装 Flask。可以使用 pip 命令进行安装:

pip install Flask

2.2 Hello World

下面是一个简单的示例,展示了如何使用 Flask 框架输出 "Hello World"。

新建一个app.py文件,输入如下内容。

Linux下执行:

export FLASK_APP=app.py

flask run

打开浏览器访问 http://127.0.0.1:5000/ 即可。

如果是 windows 执行:

set FLASK_APP=app.py

flask run

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

2.3 路由和视图函数

在 Flask 中,路由和视图函数是紧密相关的。路由用于将 URL 映射到视图函数上,视图函数则处理请求并返回响应。为了实现路由和视图函数,我们可以使用 Flask 中的 @app.route 装饰器。下面是一个简单的示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'This is the index page.'

@app.route('/hello')
def hello():
    return 'Hello, World!'

@app.route('/') 和 @app.route('/hello') 分别定义了两个路由,index() 和 hello() 则是两个视图函数。

2.4 模板

模板是 Flask 中生成 HTML 页面的一种方式。Flask 支持多种模板引擎,包括 Jinja2、Mako、Tenjin 等。在本文中,我们使用 Jinja2 作为模板引擎。

下面是一个简单的示例,展示了如何使用模板生成 HTML 页面:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html', title='Home')

@app.route('/hello')
def hello():
    return render_template('hello.html', name='Flask')

render_template() 函数用于渲染模板,第一个参数指定模板名称,第二个参数则是模板中使用的变量。

2.5 静态文件

静态文件包括 CSS、JavaScript、图片等。在 Flask 中,可以使用 url_for() 函数生成静态文件的 URL。

下面是一个简单的示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>{{ title }}</h1>
    <p>Hello, Flask!</p>
</body>
</html>

url_for('static', filename='style.css') 生成了静态文件 style.css 的 URL。

2.6 表单

表单是 Web 应用程序中常用的一种交互方式。在 Flask 中,可以使用 request 对象获取用户提交的表单数据。

下面是一个简单的示例:

from flask import Flask, request

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username == 'admin' and password == 'password':
            return 'Login success!'
        else:
            return 'Invalid username or password.'
    else:
        return '''
            <form method="post">
                <label>Username:</label>
                <input type="text" name="username">
                <label>Password:</label>
                <input type="password" name="password">
                <input type="submit" value="Login">
            </form>
        '''

request.form 可以获取 POST 请求提交的表单数据。

3. 实战案例:构建一个 Todo (待办) 应用

接下来,我们将通过一个实战案例来介绍如何使用 Flask 框架构建一个 Todo 应用。

3.1 数据库设计

首先,我们需要设计数据库。在本文中,我们使用 MySQL 作为数据库。下面是数据库的设计:

CREATE TABLE `todos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `completed` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3.2 后端实现

接下来实现后端的功能:

from flask import Flask, render_template, request, redirect, url_for
import pymysql.cursors

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

connection = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='todo',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

@app.route('/')
def index():
    with connection.cursor() as cursor:
        cursor.execute('SELECT * FROM `todos`')
        todos = cursor.fetchall()
    return render_template('index.html', todos=todos)

@app.route('/add', methods=['POST'])
def add():
    title = request.form['title']
    with connection.cursor() as cursor:
        cursor.execute('INSERT INTO `todos` (`title`) VALUES (%s)', title)
        connection.commit()
    return redirect(url_for('index'))

@app.route('/toggle/<int:todo_id>', methods=['POST'])
def toggle(todo_id):
    with connection.cursor() as cursor:
        cursor.execute('SELECT `completed` FROM `todos` WHERE `id` = %s', todo_id)
        completed = cursor.fetchone()['completed']
        cursor.execute('UPDATE `todos` SET `completed` = %s WHERE `id` = %s', (not completed, todo_id))
        connection.commit()
    return redirect(url_for('index'))

@app.route('/delete/<int:todo_id>', methods=['POST'])
def delete(todo_id):
    with connection.cursor() as cursor:
        cursor.execute('DELETE FROM `todos` WHERE `id` = %s', todo_id)
        connection.commit()
    return redirect(url_for('index'))

解析:建立数据库连接,并定义四个路由:

  • /:显示所有的 Todo。

  • /add:添加一个 Todo。

  • /toggle/:标记一个 Todo 是否已完成。

  • /delete/:删除一个 Todo。

3.3 前端实现

最后实现前端的功能:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Todo</title>
    <style>
        .completed {
            text-decoration: line-through;
        }
    </style>
</head>
<body>
    <h1>Todo</h1>
    <form method="post" action="{{ url_for('add') }}">
        <label>Title:</label>
        <input type="text" name="title">
        <input type="submit" value="Add">
    </form>
    <ul>
        {% for todo in todos %}
            <li{% if todo.completed %} class="completed"{% endif %}>
                <form method="post" action="{{ url_for('toggle', todo_id=todo.id) }}">
                    <input type="checkbox" name="completed" {% if todo.completed %}checked{% endif %}>
                    {{ todo.title }}
                </form>
                <form method="post" action="{{ url_for('delete', todo_id=todo.id) }}">
                    <input type="submit" value="Delete">
                </form>
            </li>
        {% else %}
            <p>No todos.</p>
        {% endfor %}
    </ul>
</body>
</html>

我们使用了 Jinja2 模板引擎,展示了 Todo 列表、添加 Todo、标记 Todo 是否已完成、删除 Todo 等功能。

4. 技术总结

今天介绍了如何使用 Flask 框架进行 Web 开发,并实战开发了一个轻量级的web应用。Flask 是一款 Python 的轻量级 Web 框架,具有简单易用、灵活性高等优点,初学者也能快速上手。文章来源地址https://www.toymoban.com/news/detail-722966.html

到了这里,关于Python web实战 | 用 Flask 框架快速构建 Web 应用【实战】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python Web开发 flask轻量级Web框架实战项目--学生管理系统

     上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个博客的,敬请期待吧~~~ 介如很多朋友问

    2024年02月16日
    浏览(38)
  • Python Flask-Security: 构建安全而强大的Web应用

    📚 个人网站:ipengtao.com Flask-Security是一个基于Flask的安全扩展,为开发者提供了构建安全且强大的Web应用的工具。本文将深入探讨Flask-Security的核心功能、基本用法以及在实际应用中的一些高级特性,通过丰富的示例代码,助您更全面地了解和应用这一用于Web应用安全的优秀

    2024年02月03日
    浏览(32)
  • 本地部署Python Flask并搭建web问答应用程序框架实现远程访问

    Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程我们使用Python Flask搭建一个web问答应用程序框架,并结合cpolar内网穿透工具将我们的应用程序发布到公共网络上,实现可多人远程进入到该web应用程序访问。 在操作上我们将使用

    2024年02月05日
    浏览(43)
  • 使用Flask高效构建Web应用

    1、聊聊Flask框架 Flask官方文档   Flask是Armin ronacher 基于Python开发的微型Web框架 ,诞生于2010年,它 依赖于jinja2模板和Werkzeug WSGI服务 。Flask的 核心简单易于扩展 ,它不会替你做出太多决策比如使用何种数据库或模板引擎,这些都可以根据自己的需求进行选择和替换。Flask的

    2024年02月08日
    浏览(52)
  • 如何用Flask中的Blueprints构建大型Web应用

    本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》,作者: 柠檬味拥抱。 Blueprints是Flask中的一种模式,用于将应用程序分解为可重用的模块。每个蓝图实际上是一个包含一组路由、视图和静态文件的Python模块。通过使用蓝图,我们可以将相关功能的代码组织在

    2024年03月27日
    浏览(74)
  • Python Web框架 Flask 安装、使用

    Python Web框架 Flask 安装 安装 Flask 框架 首先需要安装 Flask 框架, 可以通过以下命令安装: 创建 Flask 应用程序 在本地创建一个文件夹,例如叫 myapp ,在该文件夹中创建一个 Python 文件 app.py ,并在其中编写以下代码: 在上面的代码中,我们导入 Flask 框架,并创建了一个名为 ap

    2024年02月17日
    浏览(31)
  • Python-Web框架flask使用

    目录 1.Web框架 1.1 flask 1.1.1 debug调试  1.1.2 定义参数web服务 获取字符串 ​编辑 1.1.3 html网页渲染 1.13.1 带参数传给网页文件 普通元素 列表元素  字典元素 python的web框架,目录结构如下: 1.static存放的是css,js的样式文件 2.templates存放的是html文件 3.app.py是主要接口入口,默认创

    2024年02月16日
    浏览(38)
  • Python Web开发:Django与Flask框架

    Django和Flask都是Python中非常受欢迎的Web开发框架。虽然它们都是用于构建Web应用程序的工具,但它们在设计理念、使用方式和适用场景等方面存在一些差异。 Django Django是一个“大而全”的框架,遵循MVC设计模式。它内置了很多功能,如ORM(对象关系映射)、模板引擎、表单处

    2024年02月22日
    浏览(41)
  • Python第三方库 - Flask(python web框架)

    1.1 认识Flask Web Application Framework ( Web 应用程序框架)或简单的 Web Framework ( Web 框架)表示一个库和模块的集合,使 Web 应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 1.2 Pycharm安装与简单测试 1.2.1 安装 Pycharm 安装 Flask 框架 File → Settings →

    2024年04月28日
    浏览(28)
  • Python web 框架对比:Flask vs Django

    哈喽大家好,我是咸鱼 今天我们从几个方面来比较一些现在流行的两个 python web 框架——Flask 和 Django,突出它们的主要特性、优缺点和简单案例 到最后,大家将更好地了解哪个框架更适合自己的特定需求 参考链接:https://djangocentral.com/flask-vs-django-selecting-the-perfect-python-web

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包