Flask后端开发(一)-基础知识和前期准备

这篇具有很好参考价值的文章主要介绍了Flask后端开发(一)-基础知识和前期准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 1.背景介绍
    • 1.1. 项目背景
    • 1.2. 项目难点
    • 1.3. 项目环境
  • 2. flask后端开发实现的功能
  • 3. flask部署和前后端对接
    • 3.1. flask运行配置和服务器部署
    • 3.2. flask前后端传参
  • 4. 后端测试工具
    • 4.1. 工具介绍
    • 4.2. 工具使用
  • 后记

1.背景介绍

1.1. 项目背景

就是前几个月临时接手了一个后端项目,使用python flask框架进行后端开发,整个项目开发内容相对简单,主要是文件读取和修改,没有用上数据库操作,主要实现的功能点包括:

  • 根据网页端的参数数值,修改对应文件的参数值;
  • 展示oai运行的结果,返回给前端;
  • 使用python编程语言远程连接服务器,多线程运行liunx命令,从而运行oai代码和matlab代码。
    • 实时读取liunx命令的命令行输出,返回给前端做展示;
    • 随时终止命令行执行;

这篇文章将会梳理我在这个项目开发过程中的学习收获,欢迎交流!

1.2. 项目难点

  1. 前后端对接;
  2. 修改本地文件,包括.mlx这类动态脚本文件;
  3. 查找文件内容,并修改对应参数;
  4. python语言远程连接服务器并执行命令;
  5. 命令行输出实时读取并展示;
  6. 后端代码调试手法(小白第一次搞后端嘛

1.3. 项目环境

  • flask 2.3.3
  • gunicorn 20.0.4
  • python 2.7.18
  • MobaXterm_Personal 23.2
  • Ubuntu 20.04.6 LTS ( GNU/Linux 5.4.0-163-lowlatency x86_64)

2. flask后端开发实现的功能

  1. 修改文件参数值——根据网页端的参数数值,修改对应文件的参数值
    1. 获取网页端传参
    2. 读取对应文件:包括普通的程序文档以及mlx文件;
    3. 查找对应修改位置,替换数据
  2. 读取结果数据——展示oai运行的结果,返回给前端;
    1. 文件结果如何存储;
    2. 读取对应文件,构建参数返回给前端;
  3. 运行liunx命令行——使用python编程语言远程连接服务器,多线程运行liunx命令,从而运行oai代码和matlab代码。
    1. 远程连接服务器
    2. python语言多线程执行liunx命令
    3. 实时读取liunx命令的输出数据
    4. 终止命令执行

3. flask部署和前后端对接

3.1. flask运行配置和服务器部署

  1. flask安装

    1. 打开cmd窗口,如果已经部署了python环境,则使用如下命令安装flask对应包

      pip install flask

  2. flask基本框架

    1. 最简单的flask框架如下所示:

      from flask import Flask
      app = Flask(__name__)
       
      @app.route('/')
      def hello_world():
         return 'Hello World'
       
      if __name__ == '__main__':
         app.run()
      
    2. 对于需要分模块进行操作的flask框架,基本文件框架如下所示:

      对于主文件app.py,文件结构如下:

      # 导入包
      from flask import Flask
      from flask_bootstrap import Bootstrap
      from module1.index import *#这部分从子模块导入全部代码文件
      from module2.index import *
      from module3.index import *
      from module4.index import *
      from flask_cors import CORS
      
      # 创建实例
      app = Flask(__name__)
      bootstrap = Bootstrap(app)
      
      # 引用子模块
      app.register_blueprint(model1_name, url_prefix="/module1_name")
      app.register_blueprint(model2_name, url_prefix="/module2_name")
      app.register_blueprint(model3_name, url_prefix="/module3_name")
      app.register_blueprint(model4_name, url_prefix="/module4_name")
      
      @app.route("/")
      def index():
          return "Hello World!"
      
      if __name__ == "__main__":
          app.debug = True  # 设置调试模式,生产模式的时候要关掉debug
          app.run(host='127.0.0.1', port=5000)  # 启动服务器
      
      

      对于每个模块下的子文件index.py,文件结构如下:

      from flask import Blueprint, jsonify, request, Flask, render_template
      from markupsafe import escape
      
      model1_name = Blueprint("/model1_name", __name__)#这个是为了和主文件的连接部分进行对接
      
      # GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据。
      @model1_name.route("/function1", methods=["POST","GET"])
      def function1():
          #to do something
          return jsonify({"Success": "成功参数"})
      
      @model1_name.route("/function2", methods=["POST"])
      def function2():
      	#to do something 
          return jsonify({"Success": "成功参数"})
      
      def global_function():#这里可以设置一些公共函数,前面的function函数可以调用这些公共函数,简化代码形式
      	#to do 
          
      
  3. flask运行
    将整个项目存储于某个文件夹之后,运行方式有如下几种:

    • 通过vscode打开项目,运行app.py文件
    • cmd窗口进入该项目文件夹,使用python app.py运行;
    • cmd窗口进入该项目文件夹,使用flask run方式运行;(只针对主文件为app.py的项目)
  4. flask服务器部署

    1. 将flask文件复制一份到服务器上,配置flask运行环境
    2. ip端口部署:安装gunicorn
      1. 参考博客:python之gunicorn的配置 - 倥偬时光 - 博客园
      2. 安装:pip install gunicorn
      3. 运行:gunicorn -b ip地址:端口 app:app
    3. 部署之后:
      1. ip端口部署之后,前端可以根据指定的 ip地址:端口访问后端项目。
      2. 重新部署或者接口占用的解决方式:
        1. lsof -i:端口号:显示端口占用的线程
        2. kill -9 线程序号:杀死线程
        3. gunicorn -b ip地址:端口 app:app:重新部署端口

3.2. flask前后端传参

  1. 前端的数据传递

    1. 前端通过GET\POST等协议传递数据给后端,通俗来解释一下:
      1. GET将参数放在网址参数中,类似于如下形式

        https://account.bilibili.com/big?spm_id_from=333.999.0.0
        【key=value 形式传参】:“spm_id_from=333.999.0.0”就是通过GET方式进行数据传输。

      2. POST将数据打包之后再传给后端,类似于如下形式(json格式):

        {
        "password":"12334",
        "username":"crazypixel",
        ...
        }
        【body传参】:数据有名称和具体值,打包之后发送出去

  2. 后端的数据接收

    1. flask后端框架中,在方法定义时有method变量

      @model1_name.route("/function2", methods=["POST"])
      这里的methods=["GET","POST"]就表示后端接口能支持GET\POST两种数据传输方法,而methods=["POST"]则不支持GET方法,只支持POST方法

    2. 本项目中主要使用flask.request库进行数据接收,具体代码如下所示:

      #前期方法库引入
      from flask import request
      ## 一般写法
      if request.method == "POST":
          userID= request.form.get("userID")
      elif request.method == "GET":
          userID= request.args.get("userID")
      
      #列表分割,传递数据为:{"RNTI":"1,2,3"}
      if request.method == "POST":
      	RNTI= request.form.get("RNTI").split(",")#得到列表[1,2,3]
      

      关于flaks.request库,简单总结:

      request.form.get("key", type=str, default=None) 获取表单数据
      request.args.get("key") 获取get请求参数
      request.values.get("key") 获取所有参数
      

      可参考链接:https://foofish.net/flask_requset_form_data_json.html

4. 后端测试工具

4.1. 工具介绍

测试需求:模拟前端请求,发送对应数据给后端
工具:apipost/postman
工具介绍:Apipost使用教程

4.2. 工具使用

下面主要介绍我使用apipost这个工具涉及到的功能:


在参数项设置部分,可以选择导入参数,提前准备好测试样例,然后直接导入。

整体测试流程如下:

  • 运行后端代码;
  • 建立测试项目,进行参数设置;
  • 点击“发送”,模拟前端向后端发送请求;
  • 根据后端返回结果进行功能测试和代码调试。

后续还有功能实现相关代码,待补充ing...

后记

如果觉得我写得不错,不妨点赞关注一波走起~
想看更多博文,可以访问我的博客主页: 博客园 / CSDN / 51CTO / 掘金论坛 / 知乎文章来源地址https://www.toymoban.com/news/detail-711131.html

到了这里,关于Flask后端开发(一)-基础知识和前期准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • web开发学习笔记(8.java web后端开发基础知识)

    1.使用spring开发的优势,spring发展到今天已经形成了一种开发生态圈,提供了若干个子项目,每个项目用于完成特定的功能。使用spring全家桶,可以做到很多事情,可以很方便的套用很多的组件。 2.pom构成 指定父工程 指定web构件 指定springboot打包控件 3.启动类的写法 4.contro

    2024年01月18日
    浏览(51)
  • JVM-环境准备&性能指标&基础知识

    环境准备性能指标基础知识 环境准备 JDK — 工具 JDK(Java Development Kit) 是用于开发 Java 应用程序的软件开发工具集合,包括了 Java 运行时的环境(JRE)、解释器(Java)、编译器(javac)、Java 归档(jar)、文档生成器(Javadoc)等工具。简单的说我们要开发 Java 程序,就需要

    2024年02月07日
    浏览(40)
  • 零基础学习MSP430F552LP开发板,学习前期准备,Code Composer Studio(CCS)软件的安装

    零基础学习MSP430F552LP开发板 一、前言 零基础学习MSP430F552LP开发板,为电子设计竞赛做准备以及学好这一款芯片。 在选择比赛题目时,发现有的题目时规定使用ti的芯片作为控制MCU。这时我们就必要学会使用MSP430类的芯片了,这里开始学习的是MSP430F5529LP。样品如下图: 二、

    2024年02月16日
    浏览(31)
  • 【LangChain学习】基于PDF文档构建问答知识库(一)前期准备

    这系列主要介绍如何使用LangChain大模型,结合ChatGPT3.5,基于PDF文档构建专属的问答知识库。 LangChain 和 OpenAI 本身可支持 Nodejs 和 Python 两个版本,笔者后续的介绍主要用到Python版本,如果有需要Nodejs版本的同学,也可以给我留言,因为Nodejs版本我也实现了。 Python 版本为 ≥

    2024年02月13日
    浏览(44)
  • 后端必会的前端vue基础知识

    build ------前端工程webpack构建设置 config ------ 前端工程构建参数设置(index.js 打包) src ---- 项目代码         api ---- 服务端口请求         assets ---- 项目静态文件、图片         coponents ---- 项目自定义组件         mock ----- 模拟数据         router ----- 项目路由配置      

    2024年01月20日
    浏览(37)
  • Nodejs后端架构基础知识和案例展示

    入门笔记,大神请绕路!!! 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。 优点: 1.高并发 (高并发的

    2023年04月11日
    浏览(42)
  • 用Python基础知识实现了一个在线的markdown编辑工具、基于Editor.md、Flask、Flask_SQLAlchemy、sm.ms

    我打算把我的域名用于图床了,网站后面可能访问就不太行了 【系统已经升级啦,快看这里 】 所谓天下代码一大抄,抄来抄去有提高,用来描述编程再合适不过了,今天我也抄了一波。我通过开源+借鉴的方式,自己搞了一个在线的 markdown 编辑器,没错这篇文章就是在上面

    2024年02月01日
    浏览(41)
  • Flask框架小程序后端分离开发学习笔记《1》网络知识

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 协议:http,https (https是加密的http) 主机:g.cn zhihu.com之类的网址 端口:HTTP协议默认是80,因此一般不用填写 路径下面的「/question/31838184」是路径 http://www.zhihu.com/question/31838184 http://www.zhihu.com:80/ 电脑通

    2024年01月17日
    浏览(38)
  • 【C++】如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。

    相关视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili(1-83) 我的小站——半生瓜のblog 我知道这个视频早已经被很多人学习并且记录笔记,但是我还是想再过一遍前面的基础知识点,所以我这个笔记会非常的简洁,适合有C语言基础的小伙

    2024年02月01日
    浏览(39)
  • Unity Meta Quest 一体机开发(二):前期准备和环境配置

    ​ 此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spa

    2024年02月03日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包