我正在编写我的第一个使用ImageField的django应用程序而且我遇到了困难.问题是我的图片没有上传.我看过很多我能找到的例子.而且我不确定这里出了什么问题.
我试图通过查看upload_to
目录的位置来验证我的照片是否正在上传.当表单显示在网页中时,将显示正确的上载文件按钮.当我点击提交时,下面的代码会执行,但不会上传任何图像.
基于此upload_to
,我希望看到上传的图像看到下面的图像:
myproject/photos
或者myproject/media/photos
正确吗?
我在这里做了什么明显的错误吗?如何上传我的图片?
-------------- settings.py -------------
MEDIA_ROOT = '/home/me/django_projects/myproject/media/'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
-------------- model.py -------------
class Person(models.Model):
lastName = models.CharField(max_length=20)
firstName = models.CharField(max_length=20)
image = models.ImageField(upload_to='photos', blank=True, null=True)
# save executes but no image is saved.
# Because images are uploaded along with a new entry, I needed a special
# work around to get the self.id
def save(self):
for field in self._meta.fields:
if field.name == 'image':
if self.id is not None:
#save image now
field.upload_to = 'photos/%d' % self.id
else:
#Save image later
saveImageLast = True
super(Customer, self).save() # should create self.id if not already
if saveImageLast == True:
field.upload_to = 'photos/%d' % self.id
super(Customer, self).save()
print "save complete" #prints, but no image ...?
Run Code Online (Sandbox Code Playgroud)
-------------- forms.py -------------
class PersonForm(ModelForm):
class Meta:
model = Person
fields = ( 'lastName', 'firstName', 'image' )
Run Code Online (Sandbox Code Playgroud)
FoR*_*bia 12
从django文档,我认为这可以帮助(在过去这有助于我):
首先,为了上传文件,您需要确保元素正确地将enctype定义为"multipart/form-data"
<form enctype="multipart/form-data" method="post" action="/foo/">
Run Code Online (Sandbox Code Playgroud)
小智 5
在您使用帖子数据创建表单实例的视图中,确保您已提供 request.FILES
form = PersonForm(request.POST, request.FILES)
Run Code Online (Sandbox Code Playgroud)