我有一个按钮,可以将用户上传文件中的数据以特定格式复制到剪贴板。我已经将数据保存在数据库中,因为它是以单独的文件形式上传的。我目前拥有它,以便在点击copy to clipboard
按钮后,它会链接到我的copy_data
中的views.py
视图,该视图需要HTTP请求,该请求会重定向到包含{{1}的当前模板}按钮有这样的东西:
copy to clipboard
这样可以正常工作,因为它链接到我的HttpResponseRedirect('previous/template/here')
视图,然后重定向到包含按钮的原始视图,它会重新加载整个页面,这是不可取的。
我认为更好的解决方案是以某种方式将python函数直接绑定到按钮单击,而不是担心从一个视图重定向到另一个视图。
我发现了许多使用copy_data
的示例,但我们发现任何不适用于我的用例。我尝试将单击事件绑定到按钮没有任何问题,但我仍然坚持要弄清楚如何将python函数绑定到单击。
如何在按下按钮的情况下在我的Django模板中绑定python函数?
答案 0 :(得分:1)
很难确定,但我认为你在这里混合同步/异步范式。当您使用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,但如果你需要它,那么它就是一个特殊的响应对象。