Javascript 在没有响应的情况下执行python函数-Django

Javascript 在没有响应的情况下执行python函数-Django,javascript,python,jquery,django,ajax,Javascript,Python,Jquery,Django,Ajax,我在一个项目中使用了Django,我需要根据用户的意愿执行一些功能。如果此操作必须返回并显示新值,我知道如何执行,但当我只想在我的views.py中执行函数时,我不需要任何响应,也不知道如何执行 现在我要做的是返回一些东西,不要使用它,但我相信不返回任何东西也可以这样做 我返回响应的代码是: $('#import_btn').click(function(){ updateData() }); function updateData(filt){ console.log('He

我在一个项目中使用了
Django
,我需要根据用户的意愿执行一些功能。如果此操作必须返回并显示新值,我知道如何执行,但当我只想在我的
views.py
中执行函数时,我不需要任何响应,也不知道如何执行

现在我要做的是返回一些东西,不要使用它,但我相信不返回任何东西也可以这样做

我返回响应的代码是:

$('#import_btn').click(function(){
    updateData()
});

function updateData(filt){
    console.log('Hello');
    var csrftoken = $("[name=csrfmiddlewaretoken]").val();
    $.ajax({
        url: '/../../updateBBDD/',
        type: 'POST',
        headers:{"X-CSRFToken": csrftoken},
        data: {
            'Filt': filt,
        },
        dataType: "json",
        cache: true,
        success: function(response) {
            var cols = response.Cols;
        }
    });
}
我必须如何在我的
js
中执行python函数而没有响应


非常感谢。

我觉得你把事情弄得太复杂了。是一个请求-响应协议。因此,通常情况下,每个请求后面都会有一个响应。该响应可以为空,表示问题等

因此,您可以定义一个执行某些操作并返回空值的视图函数:

#app/views.py
从django.http导入HttpResponse
定义某些视图(请求):
#…做点什么…

return HttpResponse()
您的前端代码(js)对Python一无所知—它所做的只是向给定url发送HTTP请求(当然它需要响应—这正是HTTP的基础)。这个请求实际上触发了一些Python代码的执行,这一事实是完全正交的——就js代码而言,响应也可能只是Apache或nginx等返回文件内容,或者某个代理服务器从缓存返回响应,等等

因此,在前端,js代码发送一个请求,并期望得到一个响应(无论响应内容是什么)。这会告诉j代码已经以某种方式接收并处理了请求

在Python/Django端,Django“视图”是一个“请求处理程序”——一个可调用的(函数、方法或其他),它接受传入请求并返回响应。请注意,最后一部分是必需的-如果您的视图没有返回响应,您将得到一个异常。此响应包含的内容由您决定(内容可以完全为空),但您必须返回它

请注意,即使响应内容实际上是空的,响应也始终会有一个状态代码(默认值为200),告诉客户端(您的js代码或其他代码)请求是否得到了“正确”处理,或者是否出现了任何错误。因此,您可能不想在客户端代码中忽略响应的状态代码(至少),也不想盲目地返回一个200,不管后端发生了什么-如果某些事情没有按预期工作,您肯定要通知用户


考虑到你的问题,我强烈建议你。在不了解协议的情况下尝试进行web编程不会产生很好的结果

您只需返回一个空响应,类似于
returnhttpresponse()
。每个HTTP请求后面都应该有一个(可能是空的)HTTP响应?请注意,如果您不发送响应,浏览器将感到悲伤和孤独。(除非你设法切断TCP连接,但我不认为Django会暴露它。)“就你的js代码而言,响应也可能是……”甚至是坐在
sudo nc-l 80上的黑客手动键入响应:
# app/views.py

from django.http import HttpResponse

def some_view(request):
    # … do something …
    return HttpResponse()