flask页面操作gpn接口
https://wizardforcel.gitbooks.io/flask-extension-docs/content
http://cabeza.cn/blog/2016/02/28/datatable-learning-note-1/
页面
......
<table class="pure-table">
<tr>
<td><i class="fa fa-cog fa-lg"></i> 切换</td>
<td>
<input name="bandwidth" type="radio" id="radio_5" value="5"> 关闭
<input name="bandwidth" type="radio" id="radio_100" value="100"> 开启
</td>
<td>
<button id="submit" class="pure-button button-small pure-button-primary" disabled="disabled">提交</button>
</td>
</tr>
</table>
......
$(function() {
var old_qos;
// gpn当前状态
$.ajax({
type: 'GET',
url: $SCRIPT_ROOT + "{{ url_for('get_gpn_bandwidth') }}",
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function(data){
old_qos = data.qos
$('#radio_' + old_qos).attr('checked', 'checked');
},
});
// 提交按钮激活
$('input[name=bandwidth]').change(function(){
if ( $('input[name=bandwidth]:checked').val() == old_qos ) {
$('#submit').attr('disabled', 'disabled');
} else {
$('#submit').removeAttr('disabled');
}
});
// 提交gpn设置
$('#submit').click(function(){
var new_qos = $('input[name=bandwidth]:checked').val();
data = {'old_qos': old_qos, 'new_qos': new_qos};
$.ajax({
type: 'POST',
url: $SCRIPT_ROOT + "{{ url_for('set_gpn_bandwidth') }}",
dataType: 'json',
contentType: 'application/json;charset=utf-8',
data: JSON.stringify(data),
success: function(data){
console.log(data);
window.location.href = "{{ url_for('gpn') }}";
}
});
})
});
后台
@app.route('/gpn/', methods=['GET'])
@login_required
def gpn():
gpns = GPN.query.order_by(GPN.id.desc()).limit(20)
return render_template('gpn.html', gpns=gpns)
@app.route('/json/gpn/bandwidth', methods=['GET'])
@login_required
def get_gpn_bandwidth():
'''
获取gpn当前状态
'''
gpn = GPN.query.order_by(GPN.id.desc()).first()
return json.dumps({'qos': gpn.bandwidth})
@app.route('/json/gpn/bandwidth', methods=['POST'])
@login_required
def set_gpn_bandwidth():
'''
设置gpn带宽
'''
old_qos, new_qos = int(request.json['old_qos']), int(request.json['new_qos'])
url_token = 'http://xxx.com/get_token/'
url_gpn = 'http://xxx.com/gpn/update/'
username = 'xxxx'
password = 'xxxx'
# get token
headers = {'username': username, 'password': password}
req = urllib2.Request(url_token, headers=headers)
resp = urllib2.urlopen(req).read()
token = json.loads(resp)['Access-Token']
# set qos
data = {'qos': new_qos, 'area_id': 'cn'}
headers = {'token': token, 'Content-Type': 'application/json'}
req = urllib2.Request(url_gpn, headers=headers, data=json.dumps(data))
try:
resp = urllib2.urlopen(req).read()
bandwidth = new_qos
status = json.loads(resp)['status']
message = json.loads(resp)['messsage']
except urllib2.HTTPError, e:
bandwidth = old_qos
status = 'failure'
message = e.code
except urllib2.URLError, e:
bandwidth = old_qos
status = 'failure'
message = e.reason
# submit data
gpn = GPN()
gpn.bandwidth = bandwidth
gpn.updated_user = current_user.name
gpn.updated_time = datetime.datetime.now()
gpn.status = status
gpn.message = message
db.session.add(gpn)
db.session.commit()
return json.dumps({'current_qos': bandwidth})
flask页面操作gpn接口的更多相关文章
- day99:MoFang:Flask-JSONRPC提供RPC接口&在APP进行窗口页面操作(窗口-帧-帧组)
目录 1.服务端基于Flask-JSONRPC提供RPC接口 1.Flask-JSONRPC简介 2.安装Flask-JSONRPC模块 3.快速实现一个测试的RPC接口 4.移动端访问测试接口 2. ...
- 父页面操作iframe子页面的安全漏洞及跨域限制问题
一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...
- 笔记-flask基础操作
笔记-flask基础操作 1. 前言 本文为flask基础学习及操作笔记,主要内容为flask基础操作及相关代码. 2. 开发环境配置 2.1. 编译环境准备 安装相关Lib ...
- 关于网站登录后的页面操作所携带的不同cookie值
对于课堂派网站,登录后的页面操作只需要携带PHPSESSID或者cookie中间那部分即可,两个都带也可,SERVERID不知道是干啥的,每次响应的都会变. 代码实现: cookie = None c ...
- JavaWeb学习记录(十二)——商城购物之数据库操作的接口定义
一.基本接口,该项目中所有接口都继承它 package blank.dao; import java.util.List; public interface BaseDao<T,PK> { ...
- 【Egret】实现web页面操作PC端本地文件操作
Egret 实现web页面操作PC端本地文件操作: http://edn.egret.com/cn/book/page/pid/181 //------------------------------ ...
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
- 在子页面操作父页面元素和iframe说明
实现功能:在子页面操作父页面元素. 在实际编码的过程中,大家一定有这种需求:在父级页面有一个<iframe scrolling='auto'></iframe>内联框架,而我们 ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
随机推荐
- Codeforces Round #356 (Div. 2)B. Bear and Finding Criminals(水题)
B. Bear and Finding Criminals time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- Mobirise
网站建设器Mobirise v1.9.2 免费版 - 绿色软件联盟 2015年9月5日 - 网站建设器Mobirise是一个用户友好的程序,使您可以构建桌面和移动网站,准备在Javas cript中. ...
- maven下载的jar文件出现invalid LOC header (bad signature)
有的时候maven下载了相对应的jar文件,但是某些类无法被引入,在eclipse打开该jar文件,发现相对应的类是invalid LOC header (bad signature),这时把mave ...
- Android之Handler
1.Handler默认情况下与主线程处于同一线程 public class MainActivity extends Activity { private Button startButton = n ...
- IronPython 设置包路径
C#中添加对python文件或者对python包的引用时出现"no module .."的问题时的解决办法. 对hello.py 做一些简单的修改 添加 import syssys ...
- Win8驱动测试模式
打开驱动测试模式(保存成bat文件,双击执行) bcdedit /set testsigning on pause 执行完成后,看见提示操作成功的提示,之后我们重启一下,再次进入系统,在桌面的右下角会 ...
- 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...
- topngroupcollector
分类的字段int f1 /* key: f1 * value: doc * size: top n */ map<int, doc>() if(map.size==n) buildOrde ...
- Collection集合List、Set
Collection集合,用来保存一组数据的数据结构. Collection是一个接口,定义了所有集合都应该包含的特征和行为 Collection派生出了两类集合 List和Set List接口:Li ...
- java中传递数组的写法
var arr=["110","120","119"]; //如果浏览器不支持JSON,就使用json2.js,json2.js的源码放在最 ...