Django/Python:在不同时间使用用户上传的文件用于两个不同的视图方法
Django/Python: Use file uploaded by the user for two different view methods at different times
我的模板中有一个表单。用户上传一个文件,当它提交时,我通过Ajax调用一个视图方法,因为我不希望页面重新加载,这工作得很好。
$("#formi").submit(function(event){
event.preventDefault();
var data = new FormData($('form').get(0));
$.ajax({
type:"POST",
url:"{% url 'do_some' %}",
data: data,
processData: false,
contentType: false,
csrfmiddlewaretoken: '{{ csrf_token }}',
success: function(data){
...},
问题来了,当我想调用另一个视图传递相同的数据(文件上传),但我不希望用户再次上传文件。我将尽量详细说明这一点:
假设您有一个表单,用户上传了一个文件,提交了它,屏幕上出现了两个新的按钮。有了这两个新按钮,现在您可以在页面上移动(向右或向左)。按右键,从"主页"页面移动到"关于"页面,但页面不会重新加载,它都在相同的HTML中。
在第一次提交表单时调用一个大函数来填充"About"页面、"Contact"页面等需要花费很多时间。我想使用的数据来填写第一页快速,然后点击右键,并填写下一页快速等。我想做的是"保存"数据的地方,并使用它时,例如,"右"按钮被点击。
我没有为这个网页使用数据库。用户提供的数据是敏感的,因此不能存储。它将在用户退出页面时消失
所以,问题:有一种方法,我可以使用相同的数据,我从另一个按钮的形式?也许可以使用该按钮作为第二个表单,并将文件从第一个表单传递到这个表单,并在单击时"提交"?保存这个文件在我的python代码和使用它只有当那个按钮被点击?有没有一种方法可以延迟视图方法的执行,这样代码就不会一起运行了?
也许这是一个简单的问题,我想太多了
如果您不想稍后处理上传的文件,则必须将其保存在某个地方,要么保存在数据库中,要么保存在硬盘驱动器中,要么保存在缓存中。你不能依赖一些全局django变量,因为它不能保证在请求之间存活(整个WSGI服务器上的worker,线程可以在请求之间重新加载,这取决于你的WSGI服务器设置)。
如果你想确保没有人会从你的服务器上检索到这个文件,你可以加密它。在文件上传时,使用一些随机字符串加密它并将加密文件保存在您的服务器上,在响应中发送回加密密钥(例如,您可以将其保存在用户cookie中),因此任何将再次使用该文件的请求都必须包含适当的密钥。
- 多个mp3下载链接到一个zip文件,用于下载javascript或jquery
- 用于文件移动到另一个文件夹的Javascript自动化
- 正在添加用于文件删除的eventListener
- CollectionFS中是否存在用于文件下载的事件侦听器/回调
- jquery验证插件不适用于文件
- 用于文件管理器的javascript/部分逻辑
- Jquery.Valide无法用于文件上载
- 用于文件扩展名的正则表达式
- sendkeys不适用于文件输入selenium 2.39 Firefox 31
- 用于文件上传的javascript/flash库,带有文件大小限制和进度条
- Jquery验证引擎用于文件上传验证时,我使用了Jquery引导文件上传
- 用于文件和符号删除的正则表达式
- 用于文件下载的Java Servlet:当从表单提交启动时工作,而不是从jQuery下载启动时
- 我使用dropzone js.用于文件上传
- moo-eip无法创建用于文件上传的字段
- Angular2用于文件上传的服务器端侦听器
- 在JavaScript中克隆FileList对象用于文件上传
- jQuery进度条用于文件上传
- 用于文件上传的Java Script验证
- Web服务——如何使用javascript创建用于文件上传的soap消息