【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK

这篇具有很好参考价值的文章主要介绍了【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python 介绍

Python是一种流行的高级编程语言,具有易于学习和使用的特性,被广泛应用于各种领域。

Python的特性

  1. 简单易学:Python的语法清晰简洁,易于理解和学习。与其他编程语言相比,Python的语法设计非常直观,使得编程新手也能快速上手。
  2. 强大的标准库和丰富的第三方库:Python拥有一个庞大的标准库,提供了许多用于各种任务的实用模块,如文件处理、网络编程、数据库交互等。此外,Python的第三方库非常丰富,包括科学计算、数据分析、机器学习、Web开发等。
  3. 动态类型:Python是动态类型的语言,这意味着开发者不需要在声明变量时指定其类型。这可以使代码更加简洁,但也需要开发者注意运行时可能出现的类型错误。
  4. 解释型语言:Python是解释型语言,这意味着代码可以在运行时直接解释执行,而不需要预先编译。这提高了开发效率,并使得Python适合于快速原型开发。
  5. 面向对象:Python支持面向对象的编程风格,可以用来创建类和对象。这使得Python可以更好地组织和管理代码,并支持复杂的程序设计。

Python的使用场景

  1. Web开发:Python的Web框架如 DjangoFlask 非常流行,可用于构建各种类型的Web应用。
  2. 数据分析和机器学习:Python的第三方库如NumPy、Pandas、Scikit-learn和TensorFlow等在数据分析和机器学习领域具有广泛的应用。
  3. 自动化和脚本编写:Python的简洁语法和动态类型使得编写自动化脚本和批处理任务变得非常简单。
  4. 科学计算和工程:Python的NumPy和SciPy库为科学计算提供了强大的支持,适用于工程和科学应用。
  5. 网络编程和物联网:Python可以用于编写各种网络服务,包括REST API、WebSocket等,适用于物联网(IoT)和其他网络相关的应用。
  6. 游戏开发:Python有许多用于游戏开发的库和引擎,如Pygame和Panda3D,可以用于开发各种类型的游戏。
  7. 嵌入式系统和硬件交互:Python可以通过与C/C++等语言进行混合编程,用于与嵌入式系统和其他硬件设备进行交互。

总之,Python是一种用途广泛且功能强大的编程语言,适用于各种应用领域。它简单易学,能够提高开发效率和代码质量,因此在软件开发、数据分析、自动化脚本编写、网络编程等领域得到了广泛的应用。


python基本语法

变量命名规则

Python中的变量命名遵循以下规则:

起始字母: 变量名应始终以字母(a-z,A-Z)或下划线(_)开始。
后续字符: 变量名的后续字符可以是字母,数字或下划线。
大小写敏感性: Python是大小写敏感的,因此myVariable和myvariable会被视为两个不同的变量。
不要使用Python内建关键字: 变量名不应与Python的关键字冲突,如for, if, while, break, continue, pass等等。
不要使用Python内建模块名: 避免使用Python内建模块名作为变量名,例如importprint等。
不要使用特殊符号: 除了下划线,避免在变量名中使用其他特殊符号,如连字符(-),点(.)等。
连字符: 当变量名包含多个单词时,可以使用连字符(-)连接,例如my-variable。
使用下划线: 当变量名包含多个单词时,也可以使用下划线(_)连接,例如my_variable。
避免使用单个字符: 除非特殊情况,避免只使用单个字符作为变量名,这样的变量通常没有明确的含义。
使用驼峰命名法: 类通常使用驼峰命名法(CamelCase),例如MyClass。

数据类型

Python是一种动态类型的语言,这意味着在Python中,你不必预先声明变量的数据类型。Python会根据赋予给它们的数据自动创建数据类型

Number(数字):Python支持整数和浮点数。例如:123400.0。
String(字符串):字符串是由零个或多个字符组成的一串字符。例如:"Hello""Python"。
List(列表):列表是Python中非常常用的数据结构,它可以包含任意数量和类型的对象。例如:[1, "a", 2.3]。
Tuple(元组):元组类似于列表,但元组的元素不能修改。例如:(1, "a", 2.3)。
Dictionary(字典):字典是一个包含键值对的无序集合。例如:{"name": "Alice", "age": 20}。
Set(集合):集合是一个无序且不重复元素的集合。例如:{1, 2, 3}。
Boolean(布尔):布尔有两种值,TrueFalse。
NoneType(None):NoneType表示没有任何东西,是Python的特殊类型。
Function(函数):在Python中,函数也是一种数据类型,可以像其他数据类型一样被传递和返回。
Class(类):类是创建对象的蓝图,定义了对象的结构和行为。
Module(模块):模块是一种数据类型,可以包含函数、类、变量等。
Generator(生成器):生成器是一个可以迭代的对象,用于创建迭代器。
Coroutine(协程):协程是一种特殊类型的函数,可以在执行过程中暂停和恢复。
Asynciofuture(异步io未来):这是用于处理异步I/O操作的对象。

print(): 用于在控制台输出指定的信息。

print('Hello World') #Hello World

type(): 用于获取指定对象的类型。

print(type(123)) #<class 'int'>

len(): 用于获取指定对象的长度(例如列表、字符串、元组等)。

#字符串
print(len('123')) #3

#列表
print(len([1,2,3])) #3

#元组
print(len((1,'2',2.4,[1]))) #4

for…in…: 用于循环遍历序列(例如列表、元组、字符串)或其他可迭代对象。例如,以下代码将遍历打印列表中的所有元素:

my_list = [1, 2, 3, 4]  
for element in my_list:  
    print(element) #1,2,3,4

tuple = (1,'2.3',4)
for t in tuple:
    print(t) #1,2.3,4

str = "123"
print(len(str)) #3

if…elif…else…: 用于条件语句,根据条件执行不同的操作。

num = 10  
if num > 0:  
    print("positive")  
elif num < 0:  
    print("negative")  
else:  
    print("zero")

def: 用于定义函数。例如,以下代码定义了一个函数,接受两个参数并返回它们的和:

def addNum(a,b):
    return a+b

return: 用于从函数中返回结果。例如,以下代码调用add函数并将结果打印出来:

result = addNum(10, 20)  
print(result) # prints 30

and、or: 用于逻辑运算。例如,以下代码将判断是否满足条件:x > 0 and x < 100:

x = 50  
if x > 0 and x < 100:  
    print("x is between 0 and 100")

not: 用于逻辑非运算。例如,以下代码将判断是否不满足条件:x <= 0:

x = -10  
if not x <= 0:  
    print("x is not less than or equal to 0")

python api服务,python,课程设计,交互,前端,flask

pip安装依赖

pip install xxx

pip install -r requestments.txt

python运行文件

python main.py

Flask

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。

Flask和Django都是使用Python开发的Web应用程序后端框架,两者的主要区别在于功能丰富程度、框架灵活性和体量大小。
功能丰富程度:Django相比Flask更强大和复杂。Flask更轻量化,仅提供了框架化、流程化等关键功能。Django则提供了几乎在网站开发中需要使用的任何功能,包括用户认证、ORM、模板引擎等。
框架灵活性:Flask在定制性方面相对较强。它允许用户自己决定定制哪些功能,可以自由地使用不同的数据库、模板引擎等,而且其插件库非常丰富,可以轻松实现个性化定制。而Django则更注重整体性和一致性,使用起来更加简洁,但相比Flask略显不够灵活。
体量大小:Django被形容为“大而全”的框架,功能极其强大,是Python web框架的先驱,因此体量相对较大,对于小型微服务来说可能会显得过于臃肿。相比之下,Flask更加小巧、灵活,非常适用于小型网站或个人项目。
总的来说,Flask更适合小型项目或初学者入门学习,而Django更适合大型企业级网站或复杂的Web应用开发

python api服务,python,课程设计,交互,前端,flask
Django

python api服务,python,课程设计,交互,前端,flask
Flask

View

<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello World(html)</h1>
    {{message}}

    <div id="listDom" style="display: none;">{{list}}</div>

    <ul id="list"></ul>
</body>
<script>
    const listDom = document.querySelector('#listDom');
    let list = JSON.parse(listDom.innerText)

    var ul = document.getElementById("list");  
    list.forEach(l => {
        var item = document.createElement("li");  
        item.appendChild(document.createTextNode(l.name));  
        ul.appendChild(item);  
    });
</script>
</html>
#!/usr/env python3
# -*- coding: UTF-8 -*-

# 导入Flask
from flask import Flask,render_template

# Flask类接收一个参数
app = Flask(__name__)

# 装饰器的作用是将路由映射到视图函数index上
@app.route('/')
def index():
    return '<h1>Hello World(/)</h1>'

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

# Flask应用程序实例的run方法启动web服务器
if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=5000)

Model

  1. 安装python操作MySQL的驱动
pip install pymysql
  1. 安装ORM工具(对象关系映射)
pip install flask-sqlalchemy

python api服务,python,课程设计,交互,前端,flask

class User(db.Model):
    user_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(128), nullable=False)
    
    def __repr__(self):
        return '<User %r>' % self.name
    
    def to_dict(self):
        return{
            "userId":self.user_id,
            "name":self.name
        }

Control

html

# 渲染H5

from flask import Flask,render_template


app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello World(/)</h1>'

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

# Flask应用程序实例的run方法启动web服务器
if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=5000)

simple api

# python接口

from flask import Flask,request
import json

app = Flask(__name__)

@app.route('/')
def index():
    return 'api接口'

@app.route('/list',methods=['GET','POST'])
def list():
    lists = [1,2,3]
    return lists

@app.route('/insert',methods=['GET','POST'])
def insert():
    list = ['戴']
    if request.method == 'GET':
        name = request.args.get('name')
    if request.method == 'POST':
        name = request.values.get('name')
    list.append(name)
    return list

if __name__ == '__main__':
    app.run(debug=True,host='127.0.0.1',port=5001)

连接数据库

# config.py
class Config(object):
    # Database configuration mysql://username:password@hostname/database
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost:3306/python?charset=utf8mb4"
    SQLALCHEMY_TRACK_MODIFICATIONS = True
# 连接数据库

from flask import Flask,request
import pymysql
import json
from flask_sqlalchemy import SQLAlchemy
from config import Config

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)

@app.route('/')
def index():
    return '连接数据库'

# pymysql
@app.route('/searchByPymysql')
def searchByPymysql():
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='python')
    cursor = conn.cursor()
    sql = "SELECT * FROM user;"
    cursor.execute(sql)
    result = cursor.fetchall()
    print(result,'result')
    arr = []
    for row in result:
        tmp = {
            "userId":row[0],
            "password":row[1],
            "name":row[2]
        }
        arr.append(tmp)

    cursor.close()
    conn.close()
    return json.dumps(arr)

# SQLAlchemy
class User(db.Model):
    user_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(128), nullable=False)
    
    def __repr__(self):
        return '<User %r>' % self.name
    
    def to_dict(self):
        return{
            "userId":self.user_id,
            "name":self.name
        }
@app.route('/searchBySqlAlchemy')
def searchBySqlAlchemy():
    result = []
    user = User.query.all()
    for u in user:
        if u:
            result.append(u.to_dict())
    return json.dumps(result)

# weather
class Weather(db.Model):
    city = db.Column(db.String(80), unique=True, primary_key=True)
    weather = db.Column(db.String(80), nullable=False)
    tem = db.Column(db.Integer, nullable=False)
    
    def __repr__(self):
        return '<City %r>' % self.city
    
    def to_dict(self):
        return{
            "city":self.city,
            "weather":self.weather,
            "tem":self.tem
        }

@app.route('/getWeather')
def getWeather():
    if request.method == 'GET':
        city = request.args.get('city')
    if request.method == 'POST':
        city = request.values.get('city')
    weather = Weather.query.filter(Weather.city == city).first()
    return weather.to_dict()

if __name__ == '__main__':
    app.run(debug=True,host='127.0.0.1',port=5002)

跨域

pip install flask_cors
from flask_cors import CORS
CORS(app,resources={r"/*":{"origins":"*"}})

Mojo比python快68000倍

比Python快68000倍!Mojo正式发布,网友:Python生态系统最重要的升级来了


相关链接

Flask中文网
flask_sqlalchemy文章来源地址https://www.toymoban.com/news/detail-766777.html

到了这里,关于【毕设必备】手把手带你用Python搭建一个简单的后端服务- API的创建,前后端交互的数据传递,GET,POST,JSON,FLASK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 手把手教你用Python实现2048小游戏

    感觉好久没有写小游戏玩了,今天恰巧有空.这次我来用Python做个2048小游戏吧.废话不多说,文中有非常详细的代码示例,需要的朋友可以参考下 目录 一、开发环境 二、环境搭建 三、原理介绍 四、效果图 Python版本:3.6.4 相关模块: pygame模块; 以及一些Python自带的模块。 安装

    2024年04月28日
    浏览(75)
  • 爬虫实战|手把手教你用Python爬虫(附详细源码)

    实践来源于理论,做爬虫前肯定要先了解相关的规则和原理,要知道互联网可不是法外之地,你一顿爬虫骚操作搞不好哪天就…  首先,咱先看下爬虫的定义:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自

    2024年02月02日
    浏览(86)
  • 手把手教你用Python编写配置脚本引擎(福利篇)

    版权声明:原创不易,本文禁止抄袭、转载需附上链接,侵权必究! 配置信息初始化 定义配置引擎类和初始化方法,其中有两个属性,配置实例对象及配置文件路径: 将配置信息写入到配置文件中,该方法有三个形参,category(配置信息类别),name(配置字段名称),value(配置字

    2024年02月06日
    浏览(74)
  • 手把手教你用python演奏音乐(以富士山下为例)

    目录 1.代码 2.文本 3.效果图  这两天,我非常无聊,琢磨出了十二平均律,并利用mido库进行编写,实现了利用python演奏音乐。废话不多说了,直接上代码,供诸位大佬把玩。  

    2024年02月12日
    浏览(53)
  • 手把手教你用python一键抢12306火车票(附代码)

    哈喽,哈喽~,一年一度的抢火车票大战正式拉开序幕… 然饿大多数人碰到的是这种情况:当你满心期待摩拳擦掌准备抢票的时候,你会发现一票难求!想回趟家真难! 那么作为程序猿的你,当然要用程序猿的方式来抢票!下面分享用python来抢票! 城市cookie可根据具体需求自

    2024年02月15日
    浏览(76)
  • 从0手把手带你搭建pytorch深度学习

    目录 一、查看电脑有NVIDIA显卡没 二、更新电脑驱动 三、安装CUDA ToolKit和CUDNN 1、查看显卡驱动版本 2、查看合适的CUDA版本 3、下载CUDA ToolKit 4、安装CUDA 5、查看是否安装成功 6、安装CUDNN 7、CUDNN配置 四、安装anaconda 五、安装pycharm 六、搭建pytorch深度学习环境 1、进入Anaconda Pr

    2024年02月07日
    浏览(55)
  • 手把手教你用Python编一个《我的世界》 2.材质及第一人称

    本次,我们将实现这样一个效果: 首先,导入ursina模块 创建app 定义Block类,继承自Button 然后,我们需要一个天空 定义Sky类 因为我们所有的方块包括天空都需要图片材质,所以我们在程序开头写以下代码: 然后咱们先创建一个超平坦地形,厚度就只有1层吧,因为方块多了很

    2024年02月04日
    浏览(71)
  • 全民AI时代:手把手教你用Ollama & AnythingLLM搭建AI知识库,无需编程,跟着做就行!

    在本地电脑上跑大语言模型(LLM),已经不是什么高科技操作了。随着技术的迭代,现在利用Ollam和AnythingLLM就可以轻松构建自己的本地知识库, 人人皆可上手,有手就行 。过往要达成这一目标,可是需要有编程经验的。 首先得了解一下背后的原理。大概就是三步走:一是

    2024年04月24日
    浏览(107)
  • 手把手带你使用VSCode 搭建 STM32开发环境!

    首先附上一张VS Code图一直都喜欢这种,黑色主题感觉高大上。 下载最新版VS Code: 安装好插件,具有良好的代码补全与调试功能。 “ VS Code下载地址:https://code.visualstudio.com/ ” 下载 LLVM:用于代码补全,其实可以理解为 Clang。因为VS Code 中“C/C++”插件的自动补全功能不太好

    2024年02月07日
    浏览(100)
  • YOLOv5入门实践(1)——手把手带你环境配置搭建

      这两天我将pycharm社区版换成了专业版,也顺带着把环境从CPU改成了GPU版,本篇文章也就是我个人配置过程的一个简单记录,希望能够帮到大家啦~ ​   🍀本人YOLOv5源码详解系列:  

    2024年02月04日
    浏览(70)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包