前端和后端的数据交互(jqueryajax+pythonflask+mysql)下载MySQL-python-1.2.5.zip ⽂件之后直接解压。进⼊MySQL-python-1.2.5⽬录:
>>python setup.py install
执⾏安装命令。
连接mysql,使⽤sql语句的代码基本如下所⽰:
import MySQLdb
t(
host='localhost',
port=3306,
user='root',
passwd='你的密码',
db='你要连接的数据库',
charset='utf8'
)
sql="你要执⾏的sql语句"
cur=conn.cursor() #创建sql连接的游标
result=cur.fetchone() #获取查询结果的第⼀个结果
result=cur.fetchall() #获取查询的全部结果
#当然,如果你要进⾏更新,删除,添加的sql命令
#connmit() #执⾏更新,删除,添加的sql命令,然后确定
⼆.利⽤jquery和ajax发送json消息:
对于ajax发送post消息⾮常简单:
var data={"city":"重庆"};
$.ajax({
type: 'POST',
url:"/province",
data:JSON.stringify(data), //转化字符串
contentType: 'application/json; charset=UTF-8',
success:function(data){ //成功的话,得到消息
addselect(data);
}
});
决定发送的类型,url说明你要给你服务器上的那个url发送请求,我对应的路径是”/province”,你要改成你⾃⼰的路径。data数据表⽰
⼀个字典类型的数据,先强制转化为JSON类型,然后进⾏发送消息。
如果发送成功的话,执⾏后⾯的function函数,从服务器上获取的数据为data.
这就是⼀个最简单的POST命令的发送⽅法。
那么,⼜怎么看我们post的内容是否成功呢,这个时候就要打开你的Chrome or Firefox ,打开页⾯开发者⼯具
看到下⾯页⾯(记得打勾Preserve log,查看先前⽇志 )
可以看到我们的Request Payload的上⾯有我们需要传递的json数据,post数据成功
三.flask读取json信息
在讲flask读取json信息,我想先介绍⼀下flask的⼀些基本概念:
⾸先,先说⼀下MVC的概念:
Model-View-Controller,中⽂名“模型-视图-控制器”
⾸先C-controller,指的就是我们在python后台⾥⾯利⽤各种web框架进⾏数据的收集和处理.
View视图就是我们最终将获取的数据经过处理呈现给⽤户的html页⾯。
那么model⼜是什么呢?
下⾯展⽰⼀个⽤jinja2渲染的⼀个html页⾯
<body>
<form action="/"method="post"id="formid" >
<input type="text"name="InNumber"id="InNumber"align="center"placeholder="20 30 40 .."> <br>
<input type="button"name="btn1"value="进⾏排序"align="center"onclick="sendmessage()">
<br>
</form>
<p>{{result}} </p>>
<input type="button"value="省市联动"align="center"onclick="changepage()">
</body>
下⾯的{{result}}就是⼀个模型,这个模型包括了从服务器传回来的数据.
在⾥⾯,model就是dict类型的数据:”result”:”….”
这是不是很想我们的json。没错的,在我们前后端交互的MVC模型中,M表⽰的就是我们交互传递的json数据。好了,回到正题,服务器端获取json的⽅式有这么⼏种
request.form
request.args
request.data
<_json()
我们依次打印出来看结果:
ImmutableMultiDict([])
ImmutableMultiDict([])
{"city":"浙江"}
{u'city': u'\u6d59\u6c5f'}
第三个结果看似是我们想要,我们打印出它的类型再看看
<type 'str'>
它是⼀个str类型的数据,不是我们想要的
第四个结果是⼀个dict类型的数据,我们获取⼀下值,看是不是我们想要的
print _json()['city']
浙江
成功获取了我们发送的消息。
OK,我们成功得到了我们的数据,接下来就进⾏数据库搜索,最后发送消息就⾏了。
但如何往浏览器发送消息呢?如下代码:
@ute('/province',methods=['POST','GET'])
def province():
hod=='POST':
_json()['city']
result=selcity(rev)
return result
else:
return render_template('province.html')
直接把你的结果return就完啦,是不是很简单呀。
这就完成通过ajax和flask进⾏数据交互的⼀个过程,浏览器怎么处理数据,那就是view要做的事喽。
接下来,就是服务器端代码喽:
#!/usr/bin/env python
#encoding=utf-8
from flask import Flask
from flask import render_template
from flask import request
jquery下载的文件怎么使用from flask import url_for
import MySQLdb
import re
import sys
import types
app=Flask(__name__)
reload(sys)
reload(sys)
sys.setdefaultencoding("utf-8")
t(
host='localhost',
port=3306,
user='root',
passwd='a821200725',
db='webjob',
charset='utf8'
)
excel随机函数怎么用>计算机网络教学#sys.setdefaultencoding('utf-8')
@ute('/', methods=['POST','GET'])
def index():
hod == 'POST':
scratch作品
InNumber=request.form['InNumber']
InNumber=numsort(InNumber)
return render_template('index.html',result=InNumber) else:
return render_template('index.html')
@ute('/province',methods=['POST','GET'])
def province():
hod=='POST':
_json()['city']
result=selcity(rev)
return result
else:
return render_template('province.html')
def numsort(number):
print number
# tmp=number.split(' *')
tmp=re.split("\s+",number)
print tmp
for i in range(len(tmp)):
tmp[i]=int(tmp[i])
print tmp
tmp.sort()
res=""
for i in tmp:
res+=(str(i)+" ")
return res
def selcity(city):
sql="select litcity from Bigcity where city='"+city+"'"
cur=conn.cursor()
result=cur.fetchone()
this怎么读音英语怎么读results=result[0]
# results=results.decode("unicode-escape")
return results
if __name__=='__main__':
app.run(debug=True)
可以看到flask在创建简单的web应⽤的时候确实很轻便,⼀个app.run就完了。
这⾥要注意两个地⽅:
⼀个是:
@ute('/', methods=['POST','GET'])
def index():
这个是装饰器,⽤于绑定路由到def index这个函数。
也就是这时候你的url为ip+/的时候,服务器执⾏的就是index这个函数,要返回模版页⾯就只要: return render_template(‘页⾯’)就好啦。
但你如果在前端加载服务器的静态⽂件,如:CSS,JS,IMG。
就要在前端写上:
{{url_for('static', filename='style.css')}}
当然你的静态⽂件要存在服务器的static⽂件夹中,
具体的页⾯代码例⼦如下:
php代码加密函数<link rel="icon"href="{{ url_for('static', filename='favicon.ico')}}"type="image/x-icon">
另外⼀个就是:
if __name__=='__main__':
这个保证了,如果你直接执⾏的这个py⽂件,就会执⾏if⾥⾯语句。
但是你如果把这个py⽂件当成模块引⼊,就不会执⾏if⾥⾯语句。实际上,这时候
__name__='你的py⽂件名'
好的,我们的⼀个简单的前端和后端的数据交互就到这⾥了哦。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论