我正在开发一个使用django 1.8和python3.4与anaconda环境的网站。基本上,在用户输入参数并提交参数后,生成文件和图表并显示在网页上。然后用户可以下载文件和图像。
我处理文件存储的方法是将它们存储为静态文件,并将它们命名为“result.csv”和“plot.png”。这些文件根据用户的请求完全不同。但是,如果多个用户同时请求某些内容,则系统仅保存具有名称的文件。这非常危险。
我没有办法处理这种情况。有人可以给我一些建议或指示吗?非常感谢你。
答案 0 :(得分:2)
有几种方法可以实现这一目标。首先想到的是,假设您希望为每个用户保留一组结果(即最后生成的结果)
1-根据用户ID创建唯一名称。这使您无需先咨询数据库中的用户数据即可访问这些文件。
它还具有不必删除以前版本文件的优点。
2-使用uuid
库模块
import uuid
user_filename = uuid.uuid4()
csv_filename = user_filename+'.csv'
png_filename = user_filename+'.png'
并将user_filename
存储在数据库用户记录中以供以后访问。
3-执行相同但使用分辨率足够的时间戳
或者,您可以创建一个具有唯一名称的子目录,并使用两者的静态名称存储其中的文件。
选项2和3要求您在为同一用户生成新文件时删除以前版本的文件。
如@Wtower所述,将文件存储在MEDIA目录中,可能在另一个子目录下。