Python 之Web应用开发(Flask框架)

news2025/7/19 16:29:40

一 Python 简介

1.1 Python是继C++,java,C#等编程语言之后又一种面向对象的高级语言,凭借着简单的语法和和丰富的库,2015年开始迅速发展,到今天已成为排行前三的最受欢迎榜。

1.2 Python 应用领域非常广泛,经常用于以下领域:

  • 数据分析与科学计算:使用库如 NumPy、Pandas 和 SciPy 进行数据处理和分析。
  • 机器学习与人工智能:借助 TensorFlow、Keras 和 Scikit-learn 等库实现机器学习和深度学习模型。
  • 网络开发:使用 Django、Flask 等框架构建网站和 Web 应用。
  • 自动化与脚本编写:使用 Python 编写脚本以自动化日常任务,如文件处理、数据抓取等。
  • 游戏开发:利用 Pygame 等库开发简单的 2D 游戏。
  • 科学与数学计算:许多科学家和工程师使用 Python 进行模拟和计算。
  • 图像处理:使用 OpenCV 和 PIL 等库处理和分析图像。
  • 网络爬虫:利用 BeautifulSoup 和 Scrapy 等库抓取网页数据。

二  PyCharm 创建Flask项目

2.1 首先要安装Flask库

pip install Flask

查看是否安装成功

pip show Flask 

2.2 pycharm新建Flask项目

 创建第一个py文件 

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'

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

运行后控制台会显示出本地访问路径

 点击链接会跳转浏览器,可以看到输出

Hello World! 

2.3 代码解析

  • from flask import Flask: 这行代码从 flask 模块中导入了 Flask 类。Flask 类是 Flask 框架的核心,用于创建 Flask 应用程序实例。

  • app = Flask(__name__): 这行代码创建了一个 Flask 应用实例。__name__ 是一个特殊的 Python 变量,它在模块被直接运行时是 '__main__',在被其他模块导入时是模块的名字。传递 __name__ 给 Flask 构造函数允许 Flask 应用找到和加载配置文件。

  • @app.route('/'): 这是一个装饰器,用于告诉 Flask 哪个 URL 应该触发下面的函数。在这个例子中,它指定了根 URL(即网站的主页)。

  • def hello_world():: 这是定义了一个名为 hello_world 的函数,它将被调用当用户访问根URL时。

  • return 'Hello, World!': 这行代码是 hello_world 函数的返回值。当用户访问根 URL 时,这个字符串将被发送回用户的浏览器。

  • if __name__ == '__main__'::这行代码是一个条件判断,用于检查这个模块是否被直接运行,而不是被其他模块导入。如果是直接运行,下面的代码块将被执行。

  • app.run(debug=True):这行代码调用 Flask 应用实例的 run 方法,启动 Flask 内置的开发服务器。debug=True 参数会启动调试模式,这意味着应用会在代码改变时自动重新加载,并且在发生错误时提供一个调试器。

2.4 Flask 基本概念

  • 路由:路由是 URL 到 Python 函数的映射。Flask 允许你定义路由,这样当特定的 URL 被访问时,就会调用相应的函数。

  • 视图函数:视图函数是处理请求并返回响应的 Python 函数。它们通常接收请求对象作为参数,并返回响应对象。

  • 请求对象:请求对象包含了客户端发送的请求信息,如请求方法、URL、请求头、表单数据等。

  • 响应对象:响应对象包含了发送给客户端的响应信息,如状态码、响应头、响应体等。

  • 模板:Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页。

  • 应用工厂:应用工厂是一个 Python 函数,它创建并返回一个 Flask 应用实例。这允许你配置和初始化你的应用,并且可以创建多个应用实例。

  • 配置对象:Flask 应用有一个配置对象,你可以使用它来设置各种配置选项,如数据库连接字符串、调试模式等。

  • 蓝图:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。

  • 静态文件:静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件。

  • 扩展:Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等。

  • 会话:Flask 使用客户端会话来存储用户信息,这允许你在用户浏览你的应用时记住他们的状态。

  • 错误处理:Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。

三,Flask项目部署阿里云服务器

3.1  前提已经有阿里云ECS服务器实例,登录宝塔页面可以快速创建Flask项目

3.2 添加ECS安全组2221

3.3  配置域名访问,可以配置二级域名

3.4 打开外网映射

3.5 如果出现需要打开防火墙访问,那需要在终端开启2221端口的防火墙

 输入以下指令:

firewall-cmd --zone=public --add-port=2221/tcp --permanent
 systemctl restart firewalld.service
 firewall-cmd --query-port=2221/tcp

3.6 上传文件

我们把本地的Flask项目文件上传到ECS服务器,改下内容,返回常用json字符串结构

from flask import Flask

import json
app = Flask(__name__)

@app.route('/')
def hello_world():  # put application's code here
    # Python 字典类型转换为 JSON 对象
    data = {
        'code': 200,
        'msg': '请求成功',
        'data': '123456789'
    }

    json_str = json.dumps(data)
    return json_str

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

把本地文件拖拽到这里就可以了

资源变动需要重启网站

浏览器输入[域名:端口]访问该python网站

四 注意点

4.1 要先下载安装python,目前最新版本是python3,最好用新版的,不然项目会出很多兼容性问题

4.2 pycharm 编辑器最好也配合python用最新的,不然Flask框架都下载不下来

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

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

相关文章

华为的流程管理

华为建设流程体系始于2000年,那时华为公司面临着快速扩张和全球化发展的挑战,意识到传统的管理模式已经无法满足业务发展的需求。为了提高公司的管理效率和竞争优势,华为决定启动流程体系的建设。在建设过程中,华为借鉴了业界最佳…

SecureCRT for Mac/Win:安全高效的专业终端SSH工具软件

SecureCRT for Mac/Win是一款功能强大且安全可靠的专业终端SSH工具软件,专为网络管理人员、系统管理员和开发人员设计,旨在提供高效、安全的远程访问和管理解决方案。这款软件以其卓越的性能和丰富的功能,赢得了广泛的用户好评和信赖。 核心…

【Python机器学习】Apriori算法——使用APriori算法来发现频繁集

关联分析的目标包括两项:发现频繁项集和发现关联规则。首先需要找到频繁项集,然后才能获得关联规则。 APriori算法时发现频繁项集的一种方法。APriori算法的两个输入参数是最小支持度和数据集,算法首先会生成所有单个物品的项集列表&#xf…

【源码】Sharding-JDBC源码分析之Yaml分片配置原理(二)

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…

奥运奖牌窥视

1 前言 2024巴黎奥运会已经闭幕了,中国队创纪录地获得了海外举办的奥运会的最佳成绩,我们来个管中窥豹,看看中国队从哪些项目中取得了奖牌。 2 奖牌组成 游泳真是大项,小项数量众多,比如个人自由泳就有100m、200m、4…

经纬恒润亮相第四届焉知汽车年会,功能安全赋能域控

8月初,第四届焉知汽车年会在上海举行。此次年会围绕当下智能电动汽车的热点和焦点,聚焦于智能汽车场景应用、车载通信、激光雷达、智能座舱、功能安全、电驱动系统等多个领域,汇聚了来自OEM、科技公司、零部件供应商、测试认证机构、政府院校…

顾客账单管理和台账-SAAS 本地化及未来之窗行业应用跨平台架构

一、客户账单对客户和企业的帮助 为您的企业客户打造便捷新体验!现在,企业客户做账消费后,可自行下载账单。这一创新举措不仅大大减少了公司售后的压力,更能助力企业客户提升办公效率。想象一下,无需繁琐的沟通与等待…

论文阅读:一种基于凸规划的高效有向最密子图发现方法 | SIGMOD 2022

论文概述 这篇论文的主题是研究如何在有向图中找到密度最高的子图,这个问题被称为有向最密子图(Directed Densest Subgraph, DDS)问题。该问题在许多应用中非常重要,如社交网络分析、社区发现、假粉丝检测等。论文提出了一种基于…

【前端面试】挖掘做过的nextJS项目(上)

为什么使用nextJS 需求: 快速搭建宣传官网 1.适应pc、移动端 2.基本的路由跳转 3.页面渲染优化 4.宣传的图片、视频资源的加载优化 5.seo优化 全栈react web应用、 tailwind css原子工具的支持,方便书写响应式ui app router(React 服务器组件)支持服务器渲…

灵活易用的树莓派相机和计算机,降低了3D冰川建模的成本!

利兹大学的研究人员正在监测秘鲁的凯尔卡亚冰帽,这是世界上仅有的几个热带冰帽之一。 在欧洲成功进行试验之后,利兹大学地理学院​​​​​​​的研究人员正在安第斯山脉和喜马拉雅山脉使用树莓派计算机和树莓派高品质相机,建立低成本、长期…

Springboot权限管理系统

1、基于SpringBoot Mybatis Plus SaToken Thymeleaf Layui的后台管理系统 2、接入Sa-Token,支持菜单权限 数据库支持 MySQL、Oracle、sqlServer 等主流数据库 3、提供代码生成器,基本增删改查无需编写,可快速完成开发任务。 4、后台接口R…

从行为面试问题(behavioral questions)看中美程序员差异。

中美程序员在职场中的工作状态和职能、福利等有很大区别,从面试中的BQ轮就可见一斑。 中美程序员的面试轮差异? 国内的面试轮在不同公司间差异很大,但总体的问题类型包含笔试面试(算法题、概念题、项目深挖、职业目标、职场文化…

Leetcode JAVA刷刷站(27)移除元素

一、题目概述 二、思路方向 为了解决这个问题,你可以使用双指针的方法来原地移除所有等于 val 的元素,并返回不等于 val 的元素数量。 三、代码实现 public class Solution { public int removeElement(int[] nums, int val) { int left 0; // 左指…

结构开发笔记(四):solidworks软件(三):绘制36x36方块摄像头示意体

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141187797 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙

记录开启本篇的目的: 作为1名练习时长2年半的DBA,工作大部分时间都在和数据库打交道,包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。 正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解…

C语言 | Leetcode C语言题解之第337题打家劫舍III

题目: 题解: struct SubtreeStatus {int selected;int notSelected; };struct SubtreeStatus dfs(struct TreeNode *node) {if (!node) {return (struct SubtreeStatus){0, 0};}struct SubtreeStatus l dfs(node->left);struct SubtreeStatus r df…

ubuntu22.04不生成core文件

一、检查服务器的core文件是否打开 ulimit -a //查看时候打开core 如果core file size 是0就是关闭的!服务一般都是关闭的!将他打开即可! ulimit -c size//设置core file的大小,自定义 此时打开就可以生成了core文件了&#xff…

C语言 | Leetcode C语言题解之第336题回文对

题目&#xff1a; 题解&#xff1a; #define SIZE 9470 #define N 168000 #define P 13331typedef unsigned long long ULL; ULL p[301];//p[i]存储P^ivoid init()//初始化p进制次幂数组 {int i;p[0]1;for(i1;i<300;i){p[i]p[i-1]*P;} }int** palindromePairs(char**words,…

node异常:npm ERR! gyp verb check python checking Python executable “python2“ in t

node异常:npm ERR! gyp verb check python checking Python executable "python2" in t node异常&#xff1a; npm ERR! gyp verb check python checking for Python executable "python2" in t降低版本&#xff1a;npm install -g npm6.14.4 欢迎关注&a…

设计模式六大原则(一)--单一职责原则

GPT-4o (OpenAI) 单一职责原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;是面向对象设计中的一条基本原则。该原则的核心思想是&#xff1a;一个类应该只有一个引起它变化的原因。换句话说&#xff0c;一个类应该只有一个职责&#xff08;即一个…