이미지 업로드 기능이있는 대형 응용 프로그램을 작성하고 있습니다.Django : ImageField의 upload_to 속성을 사용하는 방법
여기 내 모델 :
class GallryImage(models.Model):
# ...
image = models.ImageField(max_length=255, upload_to='gallery', height_field='width', width_field='height')
width = models.IntegerField()
height = models.IntegerField()
# ...
그리고 여기에 내가 업로드 처리하는 방법입니다 :
image_name = 'image.png';
destination = open(settings.MEDIA_ROOT + '/gallery/' + image_name, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
이 코드는, 가지, 건조 원칙을 위반 - 경로 gallery
는 두 번 반복된다.
질문 : 내 모델 (upload_to='gallery'
)에 지정된 경로를 다시 사용하여 업로드 처리기에서 반복 할 필요가 없습니까?
저는 파이썬 2.6과 장고 1.3 베타를 사용하고 있습니다.
감사합니다. 파울로의 답변에 따라
솔루션
모델의 인스턴스가 저장되면, 파일은 내가 할 일은 이것이다, 자동으로 업로드 :
는def add(request):
from forms import ImageAddForm
form = ImageAddForm()
if request.method == 'POST':
form = ImageAddForm(request.POST, request.FILES)
if form.is_valid():
image = GalleryImage(
image = form.cleaned_data['image']
)
image.save() # file is uploaded to upload_to dir!
return HttpResponseRedirect(reverse('image_add') + '?image_added=')
else:
form = ImageAddForm()
return render_to_response('gallery/add.html',
locals(),
context_instance=RequestContext(request))
왜 손으로 이미지를 저장하고 있습니까? 양식 프레임 워크가이를 처리해야합니다. –
@Paulo Scardine, 답변으로 예제 (또는 링크)를 게시하면 매우 감사 할 것입니다. –