【发布时间】:2014-08-14 11:02:02
【问题描述】:
我正在使用 Django 开发一个应用程序。我有一个表单,用户可以在其中上传 3 个不同的文件(至少一个)。然后将这些文件发送到生成一些结果文件的主脚本。我想将所有这些文件存储在一个目录中,每个目录名称在表单提交时都是唯一的。我在 Internet 上环顾四周,发现了 UUID 技术。我安装了名为 django-uuid-upload-path 的 Django 模块。但是当我提交表单时,它总是返回相同的 uuid,看起来像一个 UUID 字符串。这是我使用此模块的模型:
from django.db import models
from uuid_upload_path import uuid
class Analysis(models.Model):
uidDir = uuid()
dirFile = 'documents/%Y/%m/%d/' + str(uidDir)
structureFile = models.FileField(upload_to = dirFile)
我尝试以这种方式使用此模块中的upload_to:
从 uuid_upload_path 导入 upload_to 类分析(模型。模型): 结构文件 = models.FileFiels(upload_to = upload_to)
我已经为我的 3 个 FileFields 完成了此操作,它在一个表单提交中为我提供了 3 个不同的 UUID。现在的问题是我的文件不在同一个目录中。
这是我的控制器,我上传用户提交的文件:
def analysis(request):
if request.method == 'POST':
documents = Analysis.objects.all()
form = AnalysisForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Analysis(structureFile = request.FILES['structureFile'])
newdoc.save()
我尝试过使用 Python 中的 uuid 模块,但遇到了同样的问题。我尝试刷新网页并删除 cookie,但没有任何效果。
P.S : 我在 OS X 10.9.4 上使用 Safari。
提前致谢
【问题讨论】:
-
如果你让一个类变量等于
uuid(),当模块被加载时,函数将只运行一次。