我有一个按钮可以将数据以特定格式从用户上传的文件复制到剪贴板。我已经将这些数据保存在数据库中,因为它是以单独的文件形式上传的。我目前拥有它,因此单击“复制到剪贴板”按钮后,它会链接到我的“views.py”中需要 HTTP 的 copy_data
View 请求重定向到包含复制到剪贴板按钮的当前模板,如下所示:
HttpResponseRedirect('上一个/模板/此处')
这工作正常,但由于它链接到我的 copy_data
View ,然后该 View 重定向到包含按钮的原始 View ,因此它会重新加载整个页面,这是不希望的。
我认为更好的解决方案是以某种方式将 python 函数直接绑定(bind)到按钮单击,而不是担心从一个 View 重定向到另一个 View 。
我发现了许多使用 ajax
的示例,但还没有找到适合我的用例的示例。我尝试将单击事件绑定(bind)到按钮,没有任何问题,但我一直在弄清楚如何将 python 函数与单击绑定(bind)。
如何在按下按钮时在 Django 模板中绑定(bind) python 函数?
最佳答案
很难确定,但我认为您在这里混合了同步/异步范例。当您使用 Ajax 生成请求时,您(通常)不想返回重定向,而是想返回数据。这可能是 JSON 数据或格式化为特定 MIME 类型的数据,甚至只是文本。从高层次来看,这可能是:
def copy_data(request):
# get posted data
submitted = request.POST
# do whatever is necessary to create document
data = ???
# first, we'll need a response
resp = HttpResponse()
# set the content type, if needed
resp.content_type = 'text/???; charset=utf-8'
# response has a file-like interface
resp.write(data)
return resp
显然,这需要做一些工作才能满足您的目的,但这是高级方法。
听起来您没有返回 JSON,但如果您需要的话,现在有一个特殊的响应对象。
关于javascript - 如何从 Django 模板中调用特定的 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993742/