我在生产服务器上上传文件时遇到问题。我在模型上使用django-stdimage如下:
class League(models.Model):
name = models.CharField(max_length=100)
logo = StdImageField(upload_to='images/league_logos', blank=True, size=(220, 120))
使用管理员应用程序,我可以在我的本地计算机上(使用开发服务器)上传模板就好了。在制作时,我有静态文件检索的nginx和其余的mod_wsgi的apache。在尝试上传产品时,我得到了
'InMemoryUploadedFile'对象没有属性'field'
错误。我在apache中拖尾错误日志,当我尝试上传时似乎没有发生任何事情。错误发生在
site-packages / django / contrib / admin / templates / admin / includes / fieldset.html,第19行的错误
这只是访问field.field的模板标记:
{{ field.field }}
我不知道如何调试这个。有什么建议吗?
由于
答案 0 :(得分:0)
我发现由于PIL在安装我的要求时没有安装。这是一个非常令人沮丧的问题,因为错误信息并没有真正让我知道这一点。
幸运的是,我遇到了这个帖子:
Why can't I upload jpg files to my Django app via admin/?
让我陷入困境。
答案 1 :(得分:0)
您可能希望将其传递给文件系统存储对象 - 然后它知道如何将从浏览器获取的InMemoryUploadedFile对象转换为ImageFieldFile,以便它可以保存图像。
# Near top of your file:
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location=settings.MEDIA_ROOT)
# Then in your model:
logo = StdImageField(storage = fs, upload_to='images/league_logos', blank=True, size=(220, 120))
这应该将上传的文件保存到MEDIA_ROOT / images / league_logos。