如何在javascript中运行python脚本并刷新django中的视图

时间:2017-10-08 01:34:09

标签: javascript python django web

我有一个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文件修改数据并使用单击按钮上的更新列更新页面

2 个答案:

答案 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客户端不是一个选项,因此您有两个选择。

  1. 在Javascript中重写ModifyData并将其用于客户端。

  2. 当用户执行将列乘以3之类的操作时:

    • 使用客户端JS向服务器发出ajax请求
    • 让服务器调用ModifyData,然后将数据返回给客户端
    • 拥有包含新数据的客户端更新视图
  3. 我建议将你的python代码移植到JS,但如果不可能#2将始终有效。您的实施方式将取决于您如何管理客户端中的数据。