python网站开发实例-【9】Python接口开发:flask Demo实例
举例1,返回当前时间接口
'''初始化:所有的Flask都必须创建程序实例,
web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例
程序实例是Flask的对象,一般情况下用如下方法实例化
Flask类只有一个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py文件的文件名'''
from flask importFlaskimportdatetime
server=Flask(__name__)
@server.route('/time',methods=['post','get'])defget_time():
now=str(datetime.datetime.now())#把当前时间转换成字符串
return "当前的时间是:%s"%now
server.run(port=8888)
执行后网页显示如下:
举例2:怎样跳转到你的网站
1、先写好一个HTML前端页面(例如我随便写了一个index.html放在了当前路径下)
2、写接口,返回html前端页面。
importflask
server=flask.Flask(__name__)
@server.route('/index')defmy_page():
f=open('index.html',encoding='utf-8')
res=f.read()
f.close()returnres
server.run(port=8888)
3、执行后网页显示如下:
举例3:登录接口
flask获取请求参数、连接数据库
1、传参
2、执行sql查数据库(已有该表)
3、返回结果
importflaskimportjsonimporttools
server=flask.Flask(__name__)
@server.route('/login',methods=['post'])deflogin():#登录需要两个参数,name和pwd
uname=flask.request.values.get('username')#传参,前面的是变量,括号里面是key
passwd=flask.request.values.get('password')#args只能获取到跟在url后面的参数,所以我们改用values
if uname and passwd:#非空为真
#需要先写一个导入数据库的函数,例如我写了一个名称为tools的函数(如图),放在另一个python文件中,import tools进行调用。当然也可以直接写在本python文件中,但是显得会累赘。
sql="SELECT * FROM app_myuser WHERE username='%s' AND passwd='%s';"%(uname,passwd)
result= tools.my_db(sql)#执行sql
ifresult:
res={"error_code":1000,"mag":"登录成功"}#接口返回的都是json,所以要这样写。先导入json模块,import json。
else:
res= {"error_code": 3001, "mag": "账号或密码错误!"}else:
res={"error_code":3000,"mag":"必填参数未填,请查看接口文档!"}return json.dumps(res,ensure_ascii=False)#防止出现乱码;json.dumps()函数是将字典转化为字符串
server.run(port=8888)
操作数据库的函数如图:
importpymysqldefmy_db(sql):
conn=pymysql.connect(
host='118.24.3.40',
user='jxz',
password='123456',
db='jxz',
charset='utf8',
autocommit=True#自动提交
)
cur=conn.cursor(cursor=pymysql.cursors.DictCursor)#建立游标;默认返回二维数组,DictCursor指定返回字典;
cur.execute(sql)#execute帮你执行sql
res=cur.fetchall()#拿到全部sql执行结果
cur.close()#关闭游标
conn.close()#关闭数据库
return res #返回sql执行的结果
调用接口服务如图(借助postman):
举例4:新增学生接口
flask获取请求参数、连接数据库;入参是json类型,参数有限制。
importflaskimportjsonimporttools
server=flask.Flask(__name__)
@server.route('/add_student',methods=['post'])defadd_student():
params=flask.request.json #入参是字典json时用它,下面的代码要判断传入的参数是否是json类型
ifparams:
name=params.get('name')
sex=params.get('sex','男')#如果没有传。默认值是男
age=str(params.get('age'))#int
addr=params.get('addr')
grade=params.get('grade')
phone=str(params.get('phone'))#最少11位,不能重复
gold=str(params.get('gold',500)) #金币可以是小数,如果没有传默认是500
if name and age and addr and grade and phone:#必填参数校验
if sex not in['男','女']: #如果性别不是男或者女
res = {"error_code": 3003, "msg": "性别只能是男或者女"}elif not age.isdigit():#如果不是整数类型
res = {"error_code": 3004, "msg": "年龄输入错误"}elif len(phone)!=11 or notphone.isdigit():
res= {"error_code": 3005, "msg": "手机号输入错误"}elif not gold.isdigit() and not tools.check.float(gold):#如果不是整数也不是小数
res = {"error_code": 3006, "msg": "金币输入错误"}else:
sql="select* from app_student where phone='%s';"%phone #查看数据库中是否有这个手机号,有的话说明重复
result = tools.my_db(sql) #执行sql
ifresult:
res= {"error_code": 1000, "msg": "手机号已经存在"}else:
sql= "INSERT INTO app_student(NAME,sex,age,addr,grade,phone,gold)VALUES('%s','%s',%s,'%s','%s',%s,'%s')" %(
name, sex, age, addr, grade, phone, gold)
tools.my_db(sql)
res= {"error_code": 200, "msg": "新增成功!"}else:
res= {"error_code": 3007, "msg": "必填参数未填写"}else:
res={"error_code":3002,"msg":"入参必须是json类型"}return json.dumps(res,ensure_ascii=False)#防止出现乱码
server.run(port=8888)
调用接口服务如图(借助postman):
举例5:上传文件接口
上传文件时加上当前日期
importflaskimportjsonimportdatetime
server=flask.Flask(__name__)deffile_upload():
f=flask.request.files.get('wjm',None)#上传文件,取一个名字,再给名字一个默认值None
if f:#如果文件不为空
cur_time=datetime.datetime.now().strftime("%Y%m%d%H%M%S")#如果上传同一个文件两次,会被覆盖,所以加一个当前日期,并指定日期格式strftime("%Y%m%d%H%M%S")
new_file_name=cur_time+f.filename#新文件名=时间+原来的文件名
f.save(new_file_name)#保存文件
res={"msg":"文件上传成功"}else:
res={"msg":"没有上传文件"}return json.dumps(res,ensure_ascii=False)#防止出现乱码
server.run(port=8888)
调用接口服务如图(借助postman):
python网站开发实例-【9】Python接口开发:flask Demo实例相关推荐
- 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,
第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...
- 怎样手动填加python变量_python(十一)接口开发、写日志、发邮件、python来发请求、手动添加环境变量...
接口开发 接口开发需要用到第三方模块flask. 1.登录的接口. import flask import json import pymysql import hashlib server = fl ...
- 【Lilishop商城】No4-2.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-平台注册会员接口开发
仅涉及后端,全部目录看顶部专栏,代码.文档.接口路径在: [Lilishop商城]记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口 ...
- python中restful接口开发实例_Python RESTful接口开发02
什么是RESTful RESTful是一种设计思想,一种风格. RESTful主要包括 资源 和 对资源的操作. 资源: 对实体的抽象,图书.音乐.电影.学生等都属于资源. 对资源的操作: ===== ...
- php 接口升级,PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发...
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...
- 自学python网站推荐-推荐自学python必入的神仙网站
现在没点技术,工作想要6000+太难了,想要挣钱,就必须让自己值钱,想要自学python必知的网站分享,每一个网站上都有自学的文章和教程,不花一分钱,自学python入门,为自己增值. 1.什么是Py ...
- 开发步骤 采用restful接口开发的开发步骤
2019独角兽企业重金招聘Python工程师标准>>> 项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开发步骤如下: 1.需求分析 ...
- python网站迁移_在Python中利用Into包整洁地进行数据迁移的教程
动机 我们花费大量的时间将数据从普通的交换格式(比如CSV),迁移到像数组.数据库或者二进制存储等高效的计算格式.更糟糕的是,许多人没有将数据迁移到高效的格式,因为他们不知道怎么(或者不能)为他们的工 ...
- python 网站模板_使用Python抓取模板之家的CSS模板
Python版本是2.7.9,在win8上测试成功,就是抓取有点慢,本来想用多线程的,有事就罢了.模板之家的网站上的url参数与页数不匹配,懒得去做分析了,就自己改代码中的url吧.大神勿喷! 代码如 ...
最新文章
- 3 月,跳还是不跳?
- Python开发工程师必知十大机器学习库
- MySQL数据库(十) 一一 数据库的导出和导入
- golang os.Rename 移动文件 报错 invalid cross-device link 解决方法
- linux安装的时候网卡配置失败,Linux下安装网卡执行make install失败
- (Java多线程)线程状态
- erlang精要(19)-以函数作为参数的函数,返回函数的函数(2)
- Programming WCF Services翻译笔记(五)
- PySide 简易教程三-------动手写起来
- Codeforces 120F Spiders
- java加法运算器界面_Java 接口实现计算器加减乘除(字符交互界面)
- TensorFlow基础篇(六)——tf.nn.max_pool()和tf.nn.avg_pool()
- win+快捷键(常用)
- 2023-2029年中国LED产业园区行业市场深度监测及战略咨询研究报告
- 【css】让img图片居中显示
- ERP系统中BOM的作用
- java web play_玩转Java Web应用开发:Play框架
- 整理一道测试面试题(微信更换头像测试用例)
- ngx-bootstrap学习笔记
- android ndk之opencv+MediaCodec硬编解码来处理视频动态时间水印
热门文章
- ES cross cluster search跨集群查询
- 最新的ES 5.0路由算法底层实现
- laravel5.6 数据库获取数据模式变为’数组‘
- 文本分类实战(七)—— Adversarial LSTM模型
- Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]
- C语言第一次实验报告
- 怎么删除Elasticsearch里的index内容
- Delphi:对TNotifyEvent的理解
- 多线程处理器 适用于 已知要处理任务的个数,进行多线程处理
- session和cookie的应用场景和区别