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

如何在javascript中运行python脚本并在django中刷新视图,javascript,python,django,web,Javascript,Python,Django,Web,我有一个python脚本,它接收一些数据并对其进行操作。但是,我需要它在javascript内部的客户端上运行,以处理一些数据并刷新视图 操纵数据的python文件工作得很好,我已经在空闲shell中对其进行了测试 DataManipulation.py class ModifyData(object): #Bunch of functions to manipulate data 下面是用于使用url“…/test”呈现视图的函数,该函数也非常有效 views.py

我有一个python脚本,它接收一些数据并对其进行操作。但是,我需要它在javascript内部的客户端上运行,以处理一些数据并刷新视图

操纵数据的python文件工作得很好,我已经在空闲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那样操作数据,但是我遇到的难题是如何使用我的DataManipulation.py文件修改数据,并使用按钮上的更新列更新页面。我认为您应该将数据传递到模板中,然后使用
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
            ...
        }
    });
}

我认为您应该将数据传递到模板中,然后使用
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
            ...
        }
    });
}

因为执行python客户端不是一个选项,所以有两个选项

  • 在Javascript中重新编写ModifyData并在客户端使用它

  • 当用户执行类似于将列乘以3的操作时:

    • 使用客户端JS向服务器发出ajax请求
    • 让服务器调用ModifyData,然后将数据返回到客户端
    • 让客户端使用新数据更新视图

  • 我建议您将python代码移植到JS,但如果不可能,那么#2将始终有效。如何实现将取决于如何管理客户机中的数据

    因为执行python客户端不是一个选项,所以有两个选项

  • 在Javascript中重新编写ModifyData并在客户端使用它

  • 当用户执行类似于将列乘以3的操作时:

    • 使用客户端JS向服务器发出ajax请求
    • 让服务器调用ModifyData,然后将数据返回到客户端
    • 让客户端使用新数据更新视图

  • 我建议您将python代码移植到JS,但如果不可能,那么#2将始终有效。如何实现将取决于如何管理客户机中的数据

    如果此应用程序使用浏览器,您将无法提供服务,然后执行python脚本。浏览器安全性防止了这种情况。如果这是一个electron或nwjs应用程序,则可以执行上述操作。如果此应用程序使用浏览器,则无法提供服务,然后执行python脚本。浏览器安全性防止了这种情况。如果这是一个electron或nwjs应用程序,那么上述内容是可能的。你是说我根本不能使用我的python脚本,为什么要复制脚本来删除用户?这个问题用django标记
    $
    属于用于路由的正则表达式。你是说我根本不能使用python脚本,为什么要复制脚本来删除用户?问题被标记为django<代码>$属于用于路由的正则表达式。