Flask轻松上手:从零开始搭建属于你的Web应用

目录

一、准备工作

二、安装Flask

三、创建你的第一个Flask应用

创建一个新的Python文件

编写Flask应用代码

运行Flask应用

四、创建一个简单的博客系统

定义路由和文章列表

创建模板文件

运行并测试博客系统

五、使用数据库存储用户信息

安装Flask-SQLAlchemy

修改app.py文件

六、总结与展望


Flask是一个轻量级的Web应用框架,它使用Python编写,以简洁、灵活和易扩展著称。Flask的核心功能包括请求响应处理、模板渲染和URL路由,通过扩展组件,可以轻松实现数据库访问、表单验证和用户身份认证等功能。本文旨在帮助新手从零开始搭建一个简单的Web应用,通过丰富的案例和代码,让你轻松上手Flask。

一、准备工作

在开始之前,你需要确保你的计算机上已经安装了Python。Python是一种广泛使用的编程语言,具有简洁易读、学习曲线平缓等优点。你可以从Python的官方网站下载并安装适合你操作系统的Python版本。

安装完Python后,你还需要一个IDE(集成开发环境)来编写和运行你的Flask应用。PyCharm是一个流行的Python IDE,它提供了丰富的功能和友好的用户界面,非常适合初学者使用。你可以从PyCharm的官方网站下载并安装社区版。

二、安装Flask

安装Flask非常简单,你可以使用pip命令来安装。打开你的命令行工具(Windows用户使用cmd或PowerShell,Mac/Linux用户使用Terminal),输入以下命令:
pip install flask
这条命令会自动下载并安装最新版本的Flask及其依赖库。

三、创建你的第一个Flask应用

创建一个新的Python文件

在你的IDE中,创建一个新的Python文件,命名为app.py。

编写Flask应用代码

在app.py文件中,编写以下代码:

from flask import Flask  app = Flask(__name__)  @app.route('/')  
def hello_world():  return 'Hello, World!'  if __name__ == '__main__':  app.run(debug=True)

这段代码创建了一个Flask应用,并定义了一个路由/,当用户访问这个路由时,会返回一个简单的字符串'Hello, World!'。

运行Flask应用

保存app.py文件后,在命令行中切换到该文件所在的目录,并运行以下命令:
python app.py
此时,你的Flask应用会启动一个本地Web服务器,并在默认端口5000上监听请求。你可以打开浏览器,访问http://127.0.0.1:5000/,你会看到一个页面显示'Hello, World!'。

四、创建一个简单的博客系统

接下来,我们将扩展我们的Flask应用,创建一个简单的博客系统,让用户可以查看最新的文章列表。

定义路由和文章列表

在app.py文件中,添加以下代码:

from flask import Flask, render_template  app = Flask(__name__)  articles = [  {'title': 'First Post', 'content': 'This is the content of the first post.'},  {'title': 'Second Post', 'content': 'Here is another article.'}  
]  @app.route('/')  
def home():  return render_template('home.html', articles=articles)  if __name__ == '__main__':  app.run(debug=True)

这段代码定义了一个路由/来处理主页请求,并创建了一个模拟的文章列表。我们使用Flask内置的模板引擎来渲染HTML页面,让网页看起来更美观。

创建模板文件

在你的项目目录中,创建一个名为templates的文件夹,并在其中创建一个名为home.html的文件。在home.html文件中,编写以下代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <title>Blog</title>  
</head>  
<body>  <h1>My Blog</h1>  <ul>  {% for article in articles %}  <li>  <h2>{{ article.title }}</h2>  <p>{{ article.content }}</p>  </li>  {% endfor %}  </ul>  
</body>  
</html>

这段代码使用Jinja2模板引擎的语法来渲染文章列表。当你访问主页时,Flask会将articles变量传递给模板,并在页面上显示每篇文章的标题和内容。

运行并测试博客系统

保存所有文件后,重新运行你的Flask应用。打开浏览器,访问http://127.0.0.1:5000/,你会看到一个页面显示你的博客文章列表。

五、使用数据库存储用户信息

随着你的应用变得更加复杂,你可能需要处理数据库连接、用户认证等功能。接下来,我们将展示如何使用SQLite数据库存储用户信息,并使用Flask-SQLAlchemy插件来简化数据库操作。

安装Flask-SQLAlchemy

在命令行中,运行以下命令来安装Flask-SQLAlchemy:
pip install flask-sqlalchemy

修改app.py文件

在app.py文件中,添加以下代码来配置数据库连接,并创建一个用户模型:

from flask import Flask, request, redirect, url_for  
from flask_sqlalchemy import SQLAlchemy  app = Flask(__name__)  
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  
db = SQLAlchemy(app)  class User(db.Model):  id = db.Column(db.Integer, primary_key=True)  username = db.Column(db.String(80), unique=True, nullable=False)  password = db.Column(db.String(120), nullable=False)  @app.route('/register', methods=['GET', 'POST'])  
def register():  if request.method == 'POST':  new_user = User(username=request.form['username'], password=request.form['password'])  db.session.add(new_user)  db.session.commit()  return redirect(url_for('login'))  return '''  <form method="post">  Username: <input type="text" name="username"><br>  Password: <input type="password" name="password"><br>  <input type="submit" value="Register">  </form>  '''  if __name__ == '__main__':  db.create_all()  # 创建数据库表  app.run(debug=True)

这段代码配置了一个SQLite数据库,并创建了一个用户模型。我们定义了一个路由/register来处理用户注册请求,当用户提交表单时,会将新用户信息保存到数据库中。

运行并测试用户注册功能
保存所有文件后,重新运行你的Flask应用。打开浏览器,访问http://127.0.0.1:5000/register,你会看到一个注册表单。填写表单并提交后,用户信息将被保存到数据库中,并重定向到登录页面(尽管登录页面尚未实现)。

六、总结与展望

通过本文,你已经从零开始搭建了一个简单的Flask Web应用,并学会了如何创建路由、渲染模板、处理表单提交和使用数据库存储数据。Flask是一个灵活且易于扩展的框架,你可以根据需要添加更多功能,如用户认证、文件上传、电子邮件发送等。

随着你对Flask理解的加深,你将能够构建更加复杂和强大的Web应用。Flask的插件库非常丰富,你可以使用现成的插件来简化开发工作。同时,你也可以学习Flask的底层原理,以便更好地理解其工作原理并优化你的应用。

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

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

相关文章

STM32开发 —— 新工程创建思路终于清晰了

目 录 工程创建三步法一、工程文件夹创建二、管理工程项三、配置工程参数 工程创建三步法 从ST官网下载好stm32标准库或HAL库&#xff0c;HAL库目录如下。 在Keil开发环境中创建STM32工程&#xff0c;分三大步即可完成工程的创建&#xff1a; 一步&#xff1a;在本地磁盘创建…

Java SpringBoot调用大模型AI构建AI应用

本文是一个用springboot 结合spring mvc 和spring ai alibaba 调用国产大模型通义千问的具体例子&#xff0c;按照这个做能够快速的搞定Java应用的调用。 然后就可以把这类应用泛化到所有的涉及到非结构化数据结构化的场景中。 Spring AI&#xff1a;简化Java中大模型调用的框…

【办公类-04-04】华为助手导出照片视频分类(根据图片、视频的文件名日期导入“年-月-日”文件夹中,并转移到“年-月”文件中整理、转移到“年”文件夹中整理)

背景需求 最近带班&#xff0c;没有时间整理照片&#xff0c;偶尔导一次&#xff0c;几个月的照片。发现用电脑版“华为手机助手“中的WLAN连接”与华为手机的“华为手机助手”连接&#xff0c;速度更快、更稳定&#xff0c;不会出现数据线连接时碰碰就断网的问题 1、先打开电…

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中&#xff0c;我们可能会遇到电脑没有声音的问题&#xff0c;这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件&#xff08;声卡&#xff09;与操作系统之间的桥梁&#xff0c;确保音频信号能够正常输入输出。那么&#xff0c;当电脑没有声卡驱动…

MYSQL死锁真实案例

​最近例行巡检时候发现一个死锁,阿里云RDS FOR MYSQL 8.0.X! 虽然阿里云的死锁页面看起来比较友好,不过跟社区版一样只是显示事务最后一条死锁SQL和相关的信息.一不小心对初级MYSQL DBA来说,深深地误导,浪费大量时间研究这两个SQL怎么发生了死锁! 阿里云RDS默认情况下审计没有…

【Spring】Spring Boot 日志(8)

本系列共涉及4个框架&#xff1a;Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点&#xff0c;根据序号学习即可。 目录 本系列共涉及4个框架&#xff1a;Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点&#xff0c;根据序号学习即可。 …

饿了么数据库表设计

有商家表、商品表、商品规格表、购物车表&#xff0c;不难分析出表是不够全面的。 (1)首先分析需要补充的表 1.对于购物车而言肯定有对应的用户&#xff0c;因此要添加一个用户表。 2.商品规格是冷&#xff0c;热&#xff0c;半分糖、全糖&#xff0c;对于冷热和半分糖是可以分…

C++模拟实现list

C教学总目录 C模拟实现list 1、成员变量2、迭代器3、insert函数4、erase函数5、pop_back、push_front、pop_front函数6、size和clear函数7、析构函数8、拷贝构造函数9、赋值运算符重载完整代码&#xff08;包含测试代码&#xff09; 1、成员变量 先来看看SGI版本STL中list的实…

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前&#xff0c;作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解&#xff0c;晕头转向。 SD卡&#xff1a;Secure Digital Card的英文缩写&#xff0c;直译就是“安全数字卡”。一般用于大一些的电子设备比如&#xff1a;电脑、数码相机、AV…

品牌怎么找到用户发的优质内容,进行加热、复制?

在&#xff0c;相对传统媒体来说&#xff0c;社交媒体营销具有更高的成本效益。品牌可以通过相对较低的成本达到大量潜在客户&#xff0c;尤其是通过口碑营销和内容分享&#xff0c;可以实现倍增的传播效果。在社媒营销的过程中&#xff0c;去找到与品牌有关的优质、正向内容&a…

物联网设备如何助力实现高效远程老人监护

在发达国家&#xff0c;老龄化进程加速&#xff0c;老年人常需医疗、行动辅助、安全保障及个人卫生护理&#xff0c;费用高昂。传统老人监护依赖护士或助理现场照料&#xff0c;而物联网远程监控方案能有效改进此模式。它通过运用传感器等技术&#xff0c;实现全天候低成本实时…

如何使用和打开jconsole

配置: spring.jmx.enabledtrue spring.jmx.default-domainmybatiesdemo management.endpoints.jmx.exposure.include* 启动参数: -Dcom.sun.management.jmxremote.port9000 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 启动项…

残差块(Residual Block)

1. **残差块的定义与作用**&#xff1a; 残差块通过引入跳跃连接&#xff08;skip-connection&#xff09;或称为快捷连接&#xff08;shortcut connection&#xff09;&#xff0c;允许网络学习输入与输出之间的残差映射&#xff0c;即学习函数&#xff0c;其中 是期望的底层映…

Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导

SSigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导 Sigrity Power SI的VR noise Metrics check模式本质上是用来评估和观测器件的电源网络的耦合对于信号的影响,输出S参数以及列出具体的贡献值。 以下图为例

讲个故事-HTTP/HTTPS 协议访问逻辑

一、HTTP/HTTPS 协议基本概念 1、协议 HTTP与 HTTPS 协议都是客户端 浏览器和服务器间的一种约定,约定如何将服务器中的信息下载到本地 ,并通过浏览器显示出来。 不同的是, HTTP 协议是一种明文传输协议,其对传输的数据不提供任何加密措施。而HTTPS 协议则是通过 SSL/TL…

生信入门第八课:RNA-seq比对、定量和差异分析

生信入门合集&#xff1a; 生信入门第一课&#xff1a;VirtualBox安装Ubuntu虚拟机 生信入门第二课&#xff1a;RNA-seq生信分析环境搭建-conda及常用软件安装 生信入门第三课&#xff1a;Linux操作系统简介及生信分析常用30个命令 生信入门第四课&#xff1a;生物信息学常…

打响反对人工智能的第一枪

序言&#xff1a;人工智能的讨论不能只有一片叫好的声音&#xff0c;一味的追捧反而可能隐藏巨大的危机。因此&#xff0c;必须有反对的声音&#xff0c;且越强烈越能激发深入思考。本篇文章的作者就以犀利的视角&#xff0c;漂亮地打响了反对人工智能应用的第一枪。 我以前一…

HR为什么都开始使用智能招聘系统?

数字化时代到来&#xff0c;人力资源管理领域正经历着前所未有的变革。 众所周知&#xff0c;今年的招聘市场&#xff0c;HR们正面临着越来越繁重的招聘任务。传统的招聘方式&#xff0c;如手动筛选简历、安排面试等&#xff0c;耗时费力极易出错。而且&#xff0c;传统的招聘…

机器人大模型GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含清华RDT详解)

前言 上个月的24年10.9日&#xff0c;我在朋友圈看到字节发了个机器人大模型GR2&#xff0c;立马去看了下其论文(当然了&#xff0c;本质是个技术报告) 这次也是我头一次看paper&#xff0c;不看正文&#xff0c;而是直奔其References&#xff0c;​看有没有我预想中的文献&a…

【VSCode】配置

安装插件 C vscode-icons gdb调试 https://www.bilibili.com/video/BV15U4y1x7b2/?spm_id_from333.999.0.0&vd_sourcedf0ce73d9b9b61e6d4771898f1441f7f https://www.bilibili.com/video/BV1pU4y1W74Z?spm_id_from333.788.recommend_more_video.-1&vd_sourcedf0…