【发布时间】:2017-05-30 08:52:38
【问题描述】:
我在 django 中运行一个服务器,我想提供一个文件。我将文件存储在'/upload/directory/filename' 下并使用
from django.shortcuts import redirect
file_path = '/upload/directory/filename'
return redirect(file_path)
但是,该文件似乎已缓存到本地放置的第一个版本并且从未更新。即使我删除了该文件,该文件仍会被提供。我检查了如果我将路径更改为'upload/directory_2/filename,那么我正确地获取了我的新文件。这是怎么回事,我该如何应对?
这是在本地发生的,我正在发出直接的服务器请求(因此不可能进行浏览器缓存或其他任何事情)。
其他信息:
我知道也许我应该使用静态文件,尽管例如this answer 建议我自己上传的文件是值得商榷的。
当我说“我想用 django 提供文件”时,我的意思是我已将文件路径关联到我的数据库中的特定实体(使用 models.FileField),并根据用户的要求我想返回这个文件。我有点怀疑在这种情况下使用静态文件是否明确。
我的问题有很多解决方法,比如每次我想“清除我的缓存”或显式打开文件时生成唯一的文件名:
with open(absolute_file_path) as file:
response = HttpResponse(file.read(), content_type='application/octet-stream')
我的问题是关于理解为什么上面的特定代码会执行它的作用,即导致数据缓存,以及如何防止这种情况。
【问题讨论】:
-
你为什么用 django 提供文件?
-
我只是警告你,这是非常错误的。
-
为什么?你能详细说明一下吗?
-
如果这没有赏金,它已经被关闭了。 stackoverflow.com/help/mcve