Pycharm中flask框架应用
flask框架应用实例
get方法
服务器端 server.py 如下
import flask
app=flask.Flask(_name_)
//启动一个应用程序 @app.rout("/")
//路由的作用
def hello():
//定义一个函数
try:
province=flask.request.args.get("province") if "province" in flask.request.args else ""
city=flask.request.args.get("city") if "city" in flask.request.args else ""
return province+","+city
except Exception as err:
return str(err) @app.rout("/hi")
def hello():
return “hello” if _name_=="_main_":
app.run()
flask可以显示静态网页
客户端 client.py如下
import urllib.parse
import urllib.request //浏览器访问
url="http://127.0.0.1:5000"
try:
//汉字编码为十六进制
province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
data="province="+province+"&city="+city
//向服务器端发送,并将服务器返回结果存储在html中
html=urllib.request.urlopen("http://127.0.0.1:5000?"+data)
html=html.read()
html=html.decode()
print(html)
except Exception as err
print(err)
post方法
服务器端 server.py 如下
import flask
@app.route("/",methods=["post"])
def index():
try:
province=flask.request.form.get("province") if "province" in flask.request.form else ""
city=flask.request.form.get("city") if "city" in flask.request.form else ""
return province+","+city
except Exceptioin as err:
return str(err)
if _name_=="_main_":
app.run()
客户端client.py如下
import urllib.parse
import urllib.request
url="http://127.0.0.1:5000"
try:
province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
data="province="+province+"&city="+city
data=data.encode()
html=urllib.request.urlopen("http://127.0.0.1:5000",data=data)
html=html.read()
html=html.decode()
print(html)
except Exception as err:
print(err)
混合
服务器端代码
import flask
app.flask.Flask(_name_)
@app.route("/",methods=["GET","POST"])
def index():
try:
provice=flask.request.args.get("province") if "province" in flask.request.args else ""
city=flask.request.args.get("city") if "city" in flask.request.args else ""
note=flask.request.args.form.get("note") if "note" in flask.request.form else ""
return province+","+city+"\n"+note
except Exception as err:
return str(err) if _name_=="_main_":
app.run()
也可以
import flask
app.flask.Flask(_name_)
@app.route("/",methods=["GET","POST"])
def index():
try:
provice=flask.request.values.get("province") if "province" in flask.request.values else ""
city=flask.request.values.get("city") if "city" in flask.request.values else ""
note=flask.request.values.get("note") if "note" in flask.request.values else ""
return province+","+city+"\n"+note
except Exception as err:
return str(err) if _name_=="_main_":
app.run()
客户端代码
import urllib.parse
import urllib.request
url="http://127.0.0.1:5000"
note="深圳依山傍海,气候宜人,...."
try:
provice=urllib.parse.quote("广东")
city=urllib.parse.quote(note)
param="province="+province+"&city="+city
html=urllib.request.urlopen("http://127.0.0.1:5000?"+param,data=note.encode())
html=html.read()
html=html.decode()
print(html)
except Exception as err:
print(err)
flask默认服务器端口号 5000
浏览器访问
http://127.0.0.1:5000
web文件下载
服务器端代码
import flask
import os
app=flask.Flask(_name_)
@app.route("/")
def index():
if not "fileName" in flask.request.values:
s="图像.jpg"
return s
else:
fileName=request.values.get("fileName")
f=open(fileName,"rb")
data=f.read()
f.close()
return data
app.run()
客户端代码
import urllib.parse
import urllib.request
url="http://127.0.0.1:5000"
resp=urllib.request.urlopen(url)
data=resp.read()
fileName=data.decode()
data=urllib.request.urlopen(url+"?fileName="+urllib.parse.quote(fileName))
data=data.read()
fobj=open("download"+fileName,"Wb")
fobj.write(data)
fobj.close()
print(fileName,len(data))
except Exception as err:
print(err)
web文件上传
服务器端代码
import flask
import os
app=flask.Flask(_name_)
@app.route("/upload",methods=["POST"])
def uploadFile():
msg=""
try:
if "fileName" in flask.request.values:
fileName=flask.request.values.get("fileName")
data=flask.request.get_data()
fobj=open("unload"+fileName,"wb")
fobj.write(data)
fobj.close()
msg="OK"
else:
msg="没有按要求上传文件"
except Exception as err:
print(err)
msg=str(err)
return msg
客户端代码
import urllib request
import os
url="http://127.0.0.1:5000/upload"
fileName="《Phython web程序开发技术》教材.pdf"
try:
fobj=open(fileName,"rb")
data=fobj.read()
fobj.close()
headers={'content-type': 'application/octet-stream'}
url=url+"?fileName="+urllib.parse.quote(fileName)
req=urllib.request.Request(url,data,headers)
resp=urllib.request.urlopen(req)
msg=resp.read().decode()
print(msg)
except Exceptioin as e:
print(e)
与数据交互
首先服务器端与客户端形成约定,

并,在Sqlite数据库中,创建表,
建立维护一个Sqllite的学生库Students.db中的学生记录表
creat table students(
No varchar(16) primary key,
Name varchar(16),
Sex varchar(8)
Age int);
服务器端代码
import flask
import sqlite3
import jspn
app=flask.Flask(_name_)
//通过类StudentDB打开Sqlit3数据库红students.db
class StudentDB:
def openDB(self)
//连接数据库
self.con=sqlit3.connect("students.db")
//获取游标
self.cursor=self.con.cursor()
def closeDB(self):
//数据库提交
self.con.commit()
//数据库连接关闭
self.con.close() def initTable(self):
res={}
try:
self.cursor.execute("create table students(
No varchar(16) primary key,Name varchar(16),
Sex varchar(8),Age int)")
res["msg"]="OK"
except Exception as err:
res["msg"]=str(err)
return res def insertRow(self,No,Name,Sex,Age):
res={}
try:
self.cursor.execute("insert students(No,Name,Sex,Age) values(?,?,?,?)" values(No,Name,Sex,Age))
res["msg"]="OK"
except Exception as err:
res["msg"]=str(errd) def deleteRow(self.No):
res={}
try:
self.cursor.execute("delete from students where No=?",(No,))
res["msg"]="OK"
except Exception as err:
res["msg"]=str(err)
return res def selectRows(self):
res={}
try:
data=[]
self.cursor.execute("select * from students order by No")
rows.self.cursor.fetchall()
for row in rows:
d={}
d["No"]=row[0]
d["Name"]=row[1]
d["Sex"]=row[2]
d["Age"]=row[3]
data.append(d)
res["msg"]="ok"
res["data"]=data
execept Exception as err:
res["msg"]=str(err)
return res @app.route("/",methods=["GET","POST"])
def process():
opt=flask.request.values.get("opt") if "opt" in flask.request.values else ""
res={}
db=StudentDB()
db.openDB()
if opt=="init" :
res=db.initTable()
elif opt=="insert":
No=flask.request.values.get("No") if "No" in flask.request.values else ""
Name=flask.request.values.get("Name") if "No" in flask.request.values else ""
Sex=flask.request.values.get("Sex") if "Sex" in flask.request.values else ""
Age=flask.request.values.get("Age") if "No" in flask.request.values else ""
res=db.insertRow(No,Name,Sex,Age)
elif opt=="delete":
No=flask.request.values.get("No") if No in flask.request.values else ""
res=db.deleteRow(No)
else:
res=db.closeDB()
return json.dumps(res) if _name_=="_main_"
app.run()
客户端代码
import urllib.request
import json
class Student: def _init_(self,No,Name,Sex,Age):
self.NO=No
self.Name=Name
self.Sex=sex
self.Age=age def.show(self)
print("%-16s%-16s%-8s%-4d"%(self.No,self.Name,self.Sex,self.Age))
students=[]
url="http://127.0.0.1:5000" def listStudents():
global students
print("%-16s%-16s%-8s%-4d"%(self.No,self.Name,self.Sex,self.Age))
for s in students:
s.show() def insertStudent(s)
global students
i=0
while(i<len(students)and s.No>students[i].No):
i=i+1
if(i<len(students) and s.No==students[i].No):
print(s.No+"already exists")
return False
students.insert(i,s)
return True def deleteRow():
global students
No=input("No=")
if(No!=""):
for i in range(len(students)):
if(students[i].No==No):
st=""
try:
st="No="+urllib.request.quote(No)
st=st.encode()
content=urllib.request.urlopen(url+"?opt=delete",st)
st=content.readline()
st=json.loads(st.decode)
st=st["msg"]
except Exception as exp:
st=str(exp)
if(st=="OK")
del students[i]
print("删除成功")
else:
print(st)
break def insertRow():
No =input("No=")
Name=input("Name=")
while True:
Sex=input("Sex=")
if(Sex=="男" or Sex=="女"):
break
else:
print("Sex is not valid")
Age = input("Age=")
if(Age==""):
Age=0
else:
Age=int(Age)
if(Age<120 and Age>0):
break
else :
print("Age is go wrong")
if (No!="" and Name !=""):
s=Student(No,Name,Sex,Age)
for x in students:
if(x.No==No)
print(No+"already exists")
return
st=""
try:
st="No="+urllib.request.quote(No)+"&Name="+urllib.request.quote(Name)+"&Sex="+urllib.request.quote(Sex)+"&Age="+str(Age)
st=st.encode()
content=urllib.request.urlopen(url+"?opt=insert",st)
st=content.read()
st=json.loads(st.decode)
st=st["msg"]
except Exception as exp:
st=str(exp)
if(st=="OK"):
inserStudents(s)
print("增加成功")
else:
print(st)
else:
print("学号,姓名不能为空") def readStudents():
global students
try:
students.clear()
content=urllib.request.urlopen(url)
data=b""
while True:
buf=content.read(1024)
if(len(buf)>0):
data=data+buf
else:
break
data=data.decode()
data=json.loads(data)
if(data["msg"]=="OK"):
data=data["data"]
for d in data
#each d is a dictionary
s=Student(d["No"],d["Name"]),d["Sex"],d["Age"])
students.append(s)
except Exception as exp:
print(exp)
try:
readStudents()
while True:
print("")
print("学生名单")
print("0.初始化学生列表")
print("1.查看化学生列表")
print("2.增加学生列表")
print("3.删除学生列表")
print("4 退出程序")
s=input("请选择(0,1,2,3,4)")
if(s=="0"):
initialize()
elif(s=="1")
listStudents()
elif(s=="2")
insertRow()
elif(s=="3")
deleteRow()
elif(s=="4")
break
except Exception as exp:
print(exp)
Pycharm中flask框架应用的更多相关文章
- (3)PyCharm中Flask工程逆向生成数据库表
一.创建数据库 在mysql数据库中创建名为"movie"的数据库. 二.安装SQLAlchemy 三.安装PyMySQL 四.创建数据模型 在app/models.py中编写数据 ...
- Python中Flask框架SQLALCHEMY_ECHO设置
在用配置类的方式给app设置配置时, SQLALCHEMY_ECHO 这个是记录打印SQL语句用于调试的, 一般设置为False, 不然会在控制台输出一大堆的东西 /home/python/.virt ...
- Flask 框架入门
Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 安装 Flask 依赖两个外部库, We ...
- Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块
Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...
- Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架
今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...
- 真正搞明白Python中Django和Flask框架的区别
在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...
- 测试开发中Django和Flask框架
Python测试开发中Django和Flask框架 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应用.系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后 ...
- Python中三大框架各自的应用场景(DJango,flask,Tornado)
django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,正常的并发量不过10000,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框架给拆掉,自己写socket实 ...
- Flask框架基础--第一篇
1.flask框架和其他几种框架的优缺点对比 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : ...
随机推荐
- CentOS 7 yum安装zabbix 设置中文界面
1. 配置安装前环境 2. 安装zabbix 3. 设置中文环境 准备搭建环境 : 系统:CentOS7.5 首先关闭SElinux 和防火墙 安装MariaDB数据库 [root@DaMoWa ...
- day05 Python中的set集合
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合,就自动去重了. 2.关 ...
- K-wolf Number (数位DP)
题意:求区间内有多少个数满足条件:任意相邻的k个数位都不相等. 思路:老套路 #include<bits/stdc++.h> using namespace std; typedef lo ...
- 学习使用scrapy itemspipeline过程
开始非常不理解from https://www.jianshu.com/p/18ec820fe706 找到了一个比较完整的借鉴,然后编写自己的煎蛋pipeline 首先在items里创建 image_ ...
- 20175208 《Java程序设计》第四周学习总结
第五章主要学习内容 1.子类的继承性: (1)子类与父类在同一包中的继承性:子类自然地继承了其父类中不是private的成员变量作为自己的成员变量. (2)子类与父类不在同一包中的继承性:子类只继承父 ...
- 微信公众号开发流程,jssdk的使用以及签名算法的实现
一 开发流程 1 基本配置-登录自己的公众号 A:新型微信认证,认证过的企业号才可以进行自定义菜单中的连接跳转: B:开发基本配置里面进行开发者iD查询,密码查询和重置和ip白名单配置: C:公众号设 ...
- [C++ Primer Plus] 第3章、处理数据(二)课后习题
1 . 编写一个小程序,要求用户使用一个整数输出自己的身高(单位为厘米),然后将身高转换为米和厘米.该程序使用下划线字符来指示输入位置.另外,使用一个 const 符号常量来表示转换因子. #incl ...
- 王之泰201771010131《面向对象程序设计(java)》第三周学习总结
王之泰201771010131<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识复习部分 第一章 回顾了Java“白皮书”的关键性语句,再次理解了以前未理解的句子.对Jav ...
- spring-cloud-config-server——Environment Repository
参考资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cl ...
- nginx windows版 下载和启动
nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.在连 ...