如何从Django模板中调用特定的python函数

时间:2015-01-16 22:22:11

标签: javascript jquery python ajax django

我有一个按钮,可以将用户上传文件中的数据以特定格式复制到剪贴板。我已经将数据保存在数据库中,因为它是以单独的文件形式上传的。我目前拥有它,以便在点击copy to clipboard按钮后,它会链接到我的copy_data中的views.py视图,该视图需要HTTP请求,该请求会重定向到包含{{1}的当前模板}按钮有这样的东西:

copy to clipboard

这样可以正常工作,因为它链接到我的HttpResponseRedirect('previous/template/here')视图,然后重定向到包含按钮的原始视图,它会重新加载整个页面,这是不可取的。

我认为更好的解决方案是以某种方式将python函数直接绑定到按钮单击,而不是担心从一个视图重定向到另一个视图。

我发现了许多使用copy_data的示例,但我们发现任何不适用于我的用例。我尝试将单击事件绑定到按钮没有任何问题,但我仍然坚持要弄清楚如何将python函数绑定到单击。

如何在按下按钮的情况下在我的Django模板中绑定python函数?

1 个答案:

答案 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,但如果你需要它,那么它就是一个特殊的响应对象。