执行没有响应的python函数 - Django [重复]
Posted
技术标签:
【中文标题】执行没有响应的python函数 - Django [重复]【英文标题】:Execute a python function without response - Django [duplicate] 【发布时间】:2020-04-03 13:02:53 【问题描述】:我正在一个项目中使用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 函数??
非常感谢。
【问题讨论】:
您只需返回一个空响应,例如return HttpResponse()
。每个 HTTP 请求都应该跟一个(可能是空的)HTTP 响应。
How do I send empty response in Django without templates 可能重复?请注意,如果您发送 no 响应,浏览器将感到悲伤和孤独。 (除非你设法切断 TCP 连接,但我认为 Django 不会暴露它。)
【参考方案1】:
您的前端代码 (js) 对 Python 一无所知 - 它所做的只是向给定的 url 发送 HTTP 请求(它当然 期望得到响应 - 这就是HTTP 的基础)。这个请求实际上触发了一些 Python 代码的执行这一事实是完全正交的 - 就您的 js 代码而言,响应也可能只是 Apache 或 nginx 等返回文件的内容,或者某些代理服务器从缓存等
因此,在前端,您的 js 代码发送一个请求它需要一个响应(无论响应内容是什么)。这告诉 j 代码该请求已被接收并以一种或另一种方式处理。
在 Python/Django 方面,Django“视图”是一个“请求处理程序”——一个可调用的(函数、方法或其他),它接受传入的请求并返回响应。请注意,最后一部分是强制性的 - 如果您的视图没有返回响应,您将收到异常。此响应包含的内容由您决定(内容可以完全为空),但您必须返回它。
请注意,即使响应内容实际上是空的,响应也将始终有一个状态代码(默认为 200)告诉客户端(您的 js 代码或其他)请求是否“正确”处理或是否发生任何事情错误的。因此,您可能不想在客户端代码中忽略响应的 status_code(至少),也不想盲目地返回 200 后端发生的任何事情 - 如果某些事情没有按预期工作,您当然想通知用户.. .
鉴于您的问题,我强烈建议您read the HTTP specs。在没有充分理解协议的情况下尝试进行 Web 编程不会产生很好的结果...
【讨论】:
“就你的 js 代码而言,响应也可能只是……”即使是坐在sudo nc -l 80
上的黑客也可以手动输入响应。 :)【参考方案2】:
我认为你把事情复杂化了。 HTTP protocol [wiki] 是一个请求-响应协议。所以通常,每个request 后面都有一个response。该响应可以为空,表示存在问题等。
因此,您可以定义一个视图函数来做某事,并返回一个空的HttpResponse
object [Django-doc]:
# app/views.py
from django.http import HttpResponse
def some_view(request):
# … do something …
return HttpResponse()
【讨论】:
以上是关于执行没有响应的python函数 - Django [重复]的主要内容,如果未能解决你的问题,请参考以下文章