2013-10-28 3 views
17

저는 Django를 처음 접했고 ModelForm을 사용하여 이미지 업로드를 처리하는 데 문제가있었습니다. 내 모델은 다음과 같습니다 :Django ModelForm Imagefield 업로드

class Project(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.CharField(max_length=2000) 
    startDate = models.DateField(auto_now_add=True) 
    photo = models.ImageField(upload_to="projectimg/", null=True, blank=True) 

을 그리고 modelform는 다음과 같습니다 :

class AddProjectForm(ModelForm): 
    class Meta: 
     model = Project 
     widgets = { 
      'description': Textarea(attrs={'cols': 80, 'rows': 50}), 
     } 
     fields = ['name', 'description', 'photo'] 

을 그리고보기 기능은 다음과 같습니다

def addProject(request, template_name): 
if request.method == 'POST': 
    addprojectform = AddProjectForm(request.POST,request.FILES) 
    print addprojectform 
    if addprojectform.is_valid(): 
     newproject = addprojectform.save(commit=False) 
     print newproject 
     print request.FILES 
     newproject.photo = request.FILES['photo'] 
     newproject.save() 
     print newproject.photo 
else: 
    addprojectform = AddProjectForm() 

newProposalNum = projectProposal.objects.filter(solved=False).count() 
return render(request, template_name, {'addprojectform':addprojectform, 
             'newProposalNum':newProposalNum}) 

템플릿은 다음과 같습니다

<form class="bs-example form-horizontal" method="post" action="">{% csrf_token %} 
         <h2>Project Name</h2><br> 
         {{ addprojectform.name }}<br> 
         <h2>Project Description</h2> 
         {{ addprojectform.description }}<br> 
         <h2>Image Upload</h2><br> 
         {{ addprojectform.photo }}<br> 
         <input type="submit" class="btn btn-success" value="Add Project"> 
        </form> 

수 있습니다. 하나라도 도와 주거나 이미지 업로드 예제를 줄 수 있습니까? 감사합니다.

+1

문제가 무엇이라고 언급 할 수 있습니까? – Anto

+0

내 문제는 이미지가 디렉토리에 업로드되지 않는다는 것입니다. –

+0

템플릿을 보여주십시오. – Rohan

답변

40

모두에게 감사합니다. 나는 어리석은 실수를 저질렀다. <form>enctype="multipart/form-data"을 추가해야합니다. 그렇지 않으면 파일을 업로드하지 않습니다.

+0

게시물을 보내 주셔서 감사합니다. 제 경우에도 모든 설정이 enctype을 사용하는 것과 동일하지만 처음에는 여전히 이미지/파일을 업로드하지 않았습니다. 웹 페이지를 다시 시작하고 여러 번 다시 실행하면 마침내 작동합니다. 내 소식은 내 설정이 올바른지 확인하는 데 도움이되었습니다. 감사 – zhihong