【flask】建站经验随笔

2023-03-07,,

【前端】

1.前端table标签中每行使用template中 {%for i in rows%} {% endfor %}来生成之后,如果想对每行进行一个button处理,此时如果使用jquery的$.ajax(),但是如果触发方式是通过某元素的id的点击触发则会出现不可用,如: $("#btn{{i.id}}").click(function(){})来实现的话,script标签中的jq没有办法获取模板中的变量内容;所以要定义一个function(param){...},在每行的button标签属性中加onclick去调用js函数即可。

2.js中如实现一个删除按钮,删除成功后同时刷新页面可以使用location.reload(),或者location.replace('/url')来实现,但是此时可能数据没有真正被删除掉,立即刷新起不到效果,所以可以加个自定义的sleep方法来规避:

var sleep = function (time) {
var startTime = new Date().getTime() + parseInt(time, 10);
while (new Date().getTime() < startTime) {
}
};
sleep(300); // 延时函数,单位ms

  

3.服务器返回给前端的图片内容可以使用<img>标签中src熟悉返回一个在static文件下的静态文件来实现,但是会出现个问题,浏览器会自动缓存图片,如果图片名称不变的话下次浏览器访问时会不能读取到相同文件名下的新图片(如此时这张图片已经更新的情况),那么可以使用后端接口返回base64给前端src属性的方式来实现。
<img src="data:image/jpg;base64,{{param.cgj_base64}}"/>

4.提交form表单到后端时没有参数值:原因表单中<input>标签中没有设置name属性。

//另外,可以通过JS-Ajax提交到后端,此时可以通过form表单的id获取该元素下的所有提交k,v系列化参数值提供给后端
var requestData = $('#createLoanForm').serializeArray();
requestData = JSON.stringify(requestData);

【后端】

1.定义models.py时如果想和run.py隔离,不可以在run和models两个文件中互相引用,比如models中引用run中定义的db对象,run中引用models中定义的数据对象。此时只能通过分别定义包在各自的包下__init__.py去引用来避免循环引用的问题。

2.flask在view中后端接口默认返回的都是HTML格式报文,如果此时想接口返回JSON可以通过以下两种方式。

from flask import Response, jsonify

# jsonify方式返回JSON格式报文
return jsonify({'loanNumber': res[0], 'orderNumber': res[1]}) # 构造Response对象返回content-type为JSON格式的报文
return Response({'loanNumber': res[0], 'orderNumber': res[1]},content_type='application/json')

【flask】建站经验随笔的相关教程结束。

《【flask】建站经验随笔.doc》

下载本文的Word格式文档,以方便收藏与打印。