Web 开发 1: Flask 框架介绍和使用

news2024/11/22 13:22:11

在 Web 开发中,Flask 是一个流行且灵活的 Python Web 框架,用于构建 Web 应用程序。它简洁而易于上手,适用于小型到中型的项目。在本篇博客中,我将为你介绍 Flask 框架的基础知识和常用技巧,帮助你更好地掌握 Web 开发中的框架部分。

Flask 框架基础知识

安装 Flask

在开始使用 Flask 之前,你需要先安装 Flask。你可以使用 pip 包管理器来安装 Flask。打开终端并运行以下命令:

pip install flask

安装完成后,你就可以在你的项目中使用 Flask 了。

创建 Flask 应用

在使用 Flask 之前,你需要先创建一个 Flask 应用。创建一个 Flask 应用非常简单,只需几行代码即可。以下是一个示例:

from flask import Flask

app = Flask(__name__)

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

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

在这个示例中,我们首先导入了 Flask 模块,并创建了一个 Flask 应用实例。然后,我们使用 @app.route('/') 装饰器定义了一个路由,该路由将处理根路径的请求。最后,我们使用 app.run() 方法运行应用。

路由和视图函数

在 Flask 中,路由用于将 URL 和视图函数关联起来。视图函数是处理请求并返回响应的函数。以下是一个示例:

@app.route('/')
def index():
    return 'Hello, Flask!'

@app.route('/about')
def about():
    return 'About page'

在这个示例中,我们定义了两个路由:'/''/about'。当用户访问根路径时,将调用 index 视图函数并返回 ‘Hello, Flask!’。当用户访问 ‘/about’ 路径时,将调用 about 视图函数并返回 ‘About page’。

模板和静态文件

Flask 支持使用模板引擎来渲染动态内容,并提供了静态文件的处理能力。以下是一个示例:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

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

在这个示例中,我们使用了 render_template 函数来渲染名为 ‘index.html’ 的模板文件。模板文件通常存放在应用程序的 ‘templates’ 文件夹中。

另外,Flask 也提供了处理静态文件(如 CSS、JavaScript 文件)的能力。你只需在应用程序的 ‘static’ 文件夹中存放这些文件,并在模板中引用它们即可。

Flask 扩展

Flask 提供了许多扩展,用于增强应用程序的功能和提供额外的特性。以下是一些常用的 Flask 扩展:

  • Flask-WTF:用于处理 Web 表单的扩展。
  • Flask-SQLAlchemy:用于与数据库交互的扩展。
  • Flask-Login:用于管理用户认证和会话的扩展。
  • Flask-Mail:用于发送电子邮件的扩展。

你可以使用这些扩展来简化开发过程,并为你的应用程序添加更多功能。

使用PyCharm

在这里插入图片描述

用户登录示例:

app.py

from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

# 模拟用户数据库
users = [
    {'username': 'admin', 'password': 'admin'},
    {'username': 'user1', 'password': 'password1'},
    {'username': 'user2', 'password': 'password2'}
]


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        for user in users:
            if user['username'] == username and user['password'] == password:
                return redirect(url_for('dashboard'))

        error = 'Invalid username or password. Please try again.'
        return render_template('login.html', error=error)

    return render_template('login.html')


@app.route('/dashboard')
def dashboard():
    return render_template('dashboard.html')


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

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>User Login</title>
</head>
<body>
    <h1>Welcome to the User Login Page</h1>
    <p>Please <a href="/login">login</a> to continue.</p>
</body>
</html>

login.html:

<!DOCTYPE html>
<html>
<head>
    <title>User Login</title>
</head>
<body>
    <h1>User Login</h1>
    {% if error %}
        <p style="color: red;">{{ error }}</p>
    {% endif %}
    <form method="POST" action="/login">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required><br><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required><br><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

dashboard.html:

<!DOCTYPE html>
<html>
<head>
    <title>User Dashboard</title>
</head>
<body>
    <h1>Welcome to the User Dashboard</h1>
    <p>You are logged in!</p>
</body>
</html>

效果:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
完整项目地址

总结

Flask 是一个简洁而灵活的 Python Web 框架,适用于构建小型到中型的 Web 应用程序。通过掌握 Flask 的基础知识、创建 Flask 应用、定义路由和视图函数,以及使用模板和静态文件,你将能够快速搭建自己的 Web 应用程序。

希望本篇博客能够帮助你更好地理解和运用 Flask,在你的 Web 开发之旅中取得成功。如果你有任何问题或需要进一步的帮助,请随时向我提问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1405264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android audio framework

linux ALSA ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动&#xff0c;应用程序编译接口(API)以及支持Linux下声音的实用程序组成。 最上层是音频应用和声卡服务&#xff1b;ALSA Library&#xff1a;alsa 提高用户空间访问声卡设备…

【就现在这个市场环境,还是别选游戏开发行业了】

就现在这个市场环境&#xff0c;还是别选游戏开发行业了 最近上网闲逛时我发现&#xff0c;一提到“怎样进入游戏开发行业&#xff1f;”&#xff0c; 大部分都是劝退。 劝退的点大致有以下几点&#xff1a; &#x1f7e5; 游戏开发经常需要加班&#xff0c;尤其是项目快要…

如何在Shopee平台上选择LED产品进行销售的步骤和策略

在如今的电商市场中&#xff0c;Shopee平台是一个非常受欢迎的在线销售平台。如果您计划在Shopee上销售LED产品&#xff0c;那么了解如何选择合适的产品是至关重要的。在本文中&#xff0c;我们将为您介绍一些在Shopee平台上选择LED产品进行销售的步骤和策略&#xff0c;以帮助…

防御保护-防火墙

1.防火墙的主要职责&#xff1a; 控制和防护--安全策略&#xff08;本质ACL&#xff09;--防火墙可以根据安全策略来抓取流量之后做出相应的动作 2-4层 2.防火墙分类&#xff1a; 吞吐量&#xff1a;防火墙同一时间处理的数据量 3.防火墙的发展历程 包过滤防火墙 应用代理防…

thinkphp5实战之phpstudy v8环境搭建,解决Not Found找不到路径问题

引言 thinkphp以快速、简约的大道至简的思想广受欢迎&#xff0c;适合开发小型项目。本地环境下&#xff0c;phpstudy v8是一款比较优秀的集成环境软件。部署完项目后&#xff0c;访问的时候傻眼&#xff0c;报错。 解决方案 不要慌&#xff0c;这个是伪静态的原因。选择apach…

【漏洞复现】SpringBlade export-user接口SQL注入漏洞

文章目录 前言声明一、SpringBlade系统简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建&#xff0c;完全遵循阿里巴巴编码规范。提供基于React和…

乳糖不耐受人群,多喝牛奶,反而降低糖尿病风险?

撰文 | 宋文法 牛奶是生活中常见的饮品&#xff0c;牛奶含有丰富的营养成分&#xff0c;包括蛋白质、钙、维生素D、维生素B等&#xff0c;牛奶的营养成分可以帮助增强人体的体质&#xff0c;提高免疫力&#xff0c;预防疾病。 在中国&#xff0c;奶制品的消费量远低于西方人口&…

大模型学习与实践笔记(十二)

将RAG生成模型部署到openxlab 平台 代码仓库&#xff1a;https://github.com/AllYoung/LLM4opencv 1&#xff1a;创建代码仓库 在 GitHub 中创建存放应用代码的仓库&#xff0c;其代码大致目录树如下&#xff1a; ├─GitHub repo │ ├─app.py # …

云渲染平台在场景渲染作业中提供的优势

​云渲染平台在场景渲染作业中提供的优势不容小觑&#xff0c;它开启了一种高效、便捷且成本可控的渲染流程。通过利用强大的云端计算资源&#xff0c;艺术家和开发者们可以轻松上传他们的项目&#xff0c;并快速得到高质量的渲染结果。这种技术特别适合处理那些对计算能力要求…

技术浪潮中的职业变革:程序员面临的裁员挑战与应对策略

目录 前言 冲破时空壁垒&#xff1a;探索技术变革的酷时代&#xff01; 逆境成长&#xff1a;一个互联网人战胜失业困境的故事 裁员的双面影响&#xff1a;挑战与机遇 应对裁员潮危机&#xff1a;程序员的超级英雄之路 前言 惊人的新闻传来&#xff0c;一对来自中国的工程师…

leetcode第 381 场周赛最后一题 差分,对称的处理

第 381 场周赛 - 力扣&#xff08;LeetCode&#xff09;最后一题3017. 按距离统计房屋对数目 II - 力扣&#xff08;LeetCode&#xff09; dijkstra超时了&#xff0c;看了灵神的解题方法力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台&#xff0c;其…

头条文章采集ChatGPT4.0改写软件环境配置教程步骤

大家好&#xff0c;我是淘小白~ 下面给大家整理一下&#xff0c;ChatGPT4.0改写软件环境配置教程 下面是我们拿到的环境配置软件&#xff0c;分别是&#xff1a;117版本的谷歌浏览器&#xff0c;谷歌浏览器驱动&#xff0c;notepad&#xff08;用于打开config.ini&#xff0c…

计算机网络-物理层基本概念(接口特性 相关概念)

文章目录 总览物理层接口特性星火模型给出的相关概念解释&#xff08;仅供参考&#xff09; 总览 求极限传输速率&#xff1a;奈氏准则&#xff0c;香农定理&#xff08;背景环境不一样&#xff09; 编码&#xff1a;数据变成数字信号 调制&#xff1a;数字信号变成模拟信号 信…

go和swoole性能比较

开发效率 Go语言是本质上是静态语言&#xff0c;开发效率稍差&#xff0c;但性能更强&#xff0c;更适合底层软件的开发 Swoole使用PHP语言&#xff0c;动态脚本语言&#xff0c;开发效率最佳&#xff0c;更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件&…

机器学习-numpy

机器学习–numpy Numpy&#xff08;Numerical Python&#xff09;是一个开源的Python科学计算库&#xff0c;用于快速处理任意维度的数组。 Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务&#xff0c;使用Numpy比直接使用Python要简洁的多。 Numpy使用ndarray对象来…

提取文案小助手小程序使用方法?

​很多人经常会说文案提取小程序&#xff0c;今天就来说说提取文案小助手如何将视频转化为文本的&#xff01;如何免费提取视频文案&#xff1a; 视频转换文字使用步骤 步骤一 复制你想提取的短视频链接; 步骤二 打开微信客户端搜索 : 文案提取小程序&#xff0c;或者保存下…

【办公类-22-01】20240123 UIBOT逐一提取CSDN质量分

背景需求&#xff1a; 最近每天传2份Python&#xff0c;发现平均分从73.5降到了72.7。网上搜索一下原因&#xff0c;发现每篇CSDN都有一个评分&#xff08;以下是查分网站&#xff09; https://www.csdn.net/qchttps://www.csdn.net/qc 但是一篇一篇查询&#xff0c;显然太繁…

多线程-线程的等待通知wait、notify

目录 1.什么是线程的等待通知 2.wiat&#xff08;&#xff09;方法 2.1 wait 做的事情: 2.2wait 结束等待的条件: 代码示例&#xff1a; 2.3wait的三种重载方式 2.4 面试问题&#xff1a;wait&#xff08;&#xff09;和sleep&#xff08;&#xff09;之间的区别 3.notify…

CHS_03.2.2.3_1+2.2.5+进程调度的时机、切换与过程、方式

CHS_03.2.2.3_12.2.5进程调度的时机、切换与过程、方式 知识总览进程调度的时机进程调度的方式进程的切换与过程 知识回顾 在这个小节中 我们会继续学习进程调度相关的一系列知识点 知识总览 首先 我们会来回答下 进程调度的时机是什么 什么时候需要进行进程调度 而什么时候又…

docker 搭建mysql集群一主一从,两台机器

一、准备两条机器&#xff0c;分别为IP1和IP2&#xff0c;其中IP1为主,IP2为从 二、在两台机器上分别拉取mysql镜像 docker pull mysql:8.0.29三、在home目录下新建目录&#xff0c;分别为/home/mysql/data,/home/mysql/conf 1、在IP1主机下的/home/mysql/conf目录下新建my.cn…