gpt4 book ai didi

python - Django FileField(或ImageField)open()方法为有效文件返回None?

转载 作者:IT老高 更新时间:2023-10-28 20:21:05 26 4
gpt4 key购买 nike

让我这样说:

模型.py:

class Task(models.Model):
...
seq_file = models.FileField(upload_to='files/', blank=True, null=True)
...

ajax.py(我用的是dajaxice但没关系):

...
def startTask(request, name):
task = Task.objects.get(task_name=name)
data = task.seq_file.open()
filename = os.path.join(settings.MEDIA_ROOT ,task.seq_file.name)
if not os.path.isfile(filename):
raise Exception, "file " + filename + " not found."
sequences = parser.parse(data.read())
...

返回:

File "/home/mnowotka/Dokumenty/MgrFuncAdnot/app/django-gui/src/gui/ajax.py", line 43, in startTask
sequences = parser.parse(data.read())

AttributeError: 'NoneType' object has no attribute 'read'

但是:

...
def startTask(request, name):
task = Task.objects.get(task_name=name)
filename = os.path.join(settings.MEDIA_ROOT ,task.seq_file.name)
if not os.path.isfile(filename):
raise Exception, "file " + filename + " not found."
data = open(filename)
sequences = parser.parse(data.read())
...

完美运行!为什么?

(我使用的是 django 1.3)

最佳答案

因为 models.FileFieldopen 方法没有返回任何内容

你可以使用:

task.seq_file.read()

而且你不需要计算文件的路径来检查文件是否存在。你可以使用 task.seq_file.path:

if not os.path.isfile(task.seq_file.path):
....

关于python - Django FileField(或ImageField)open()方法为有效文件返回None?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com