我有一个python脚本,它接收一些数据并对其进行操作。但是我需要它在javascript内部的客户端运行来处理一些数据并刷新视图。
操作数据的python文件运行良好,因为我在IDLE shell中测试了它
DataManipulation.py
class ModifyData(object):
#Bunch of functions to manipulate data
下面是用于使用url'... / test'呈现视图的函数,它也可以完美地运行。
views.py
def test(request):
template = 'app/test.html'
file = 'documents/Sample.csv' #File to be loaded
args = {'test': file }
return render(request, template, args)
加载此页面后,我使用一个javascript库在表格中显示页面上的数据,然后用户可以操纵数据,例如将列乘以3,但我遇到的是如何进行数据管理。 py文件修改数据并使用单击按钮上的更新列更新页面
答案 0 :(得分:1)
我认为您应该将数据传递到模板中,然后使用javascript
来操作数据,之后您可以使用ajax
更新您的页面而无需刷新,例如:
<!--html-->
<button onclick="deleteUser({{ request.user.pk }})">Submit</button>
<!---->
function deleteUser(userid) {
var post_data = {
'userid': userid,
}
$.ajax({
type: "POST",
url: "/deleteuser",// the view function to post
data: post_data,
contentType: 'application/json;charset=UTF-8',
success: function(result) {
// do something after post
...
}
});
}
视图功能:
# url(r'^/deleteuser$', views.delete_user)
def delete_user(request):
if request.method == 'POST':
# do something
userid = request.POST.get('userid')
user = User.objects.get(pk=userid)
# dict contain response data
response_data = {...}
# return response
return HttpResponse(json.dumps(response_data),content_type='application/json')
答案 1 :(得分:1)
由于执行python客户端不是一个选项,因此您有两个选择。
在Javascript中重写ModifyData并将其用于客户端。
当用户执行将列乘以3之类的操作时:
我建议将你的python代码移植到JS,但如果不可能#2将始终有效。您的实施方式将取决于您如何管理客户端中的数据。