2011-12-19 3 views
0

이 코드 작업을하기 위해 노력하고 있습니다. 파이썬 2.7 및 Django 1.3을 사용하고 있습니다.숨겨진 확인 양식 - Django

양식을 제출하려고하면 양식에 문제가있는 것처럼 오류 페이지로 연결됩니다.

class Livro (models.Model): 
    Titulo = models.CharField(max_length=200) 
    Autor = models.CharField(max_length=200) 
    Genero = models.CharField(max_length=100) 
    Editora = models.CharField(max_length=200) 
    Capa = models.ImageField(upload_to='media', blank=True, null=True) 
    ISBN = models.CharField(max_length=200) 
    Serie = models.CharField(max_length=200) 
    Data = models.DateField() 
    Tipocapa = models.CharField(max_length=100) 
    Lingua = models.ForeignKey(PropObra,'Lingua', related_name="lingualivro") 

    def __unicode__(self): 
     return self.Titulo 

이 내가 구현 한보기이다 :

def salvalivro(request): 
    if request.method == 'POST': 
     form = LivroForm(request.POST, request.FILES) 
    if form.is_valid(): 
     form = LivroForm() 
     if not form.is_valid(): 
      return HttpResponseRedirect('/erro/') 
    return render_to_response('salvalivro.html', {'form': form,}, context_instance=RequestContext(request)) 

가 그리고 이것이 내가 템플릿 안에있는 코드 :

나는 이미지 필드 모델 클래스가

<form enctype="multipart/form-data" method="POST" action="/salvalivro/" >{% csrf_token %} 
{{ form.as_p }} 
<input type="submit" value="Salvar" /> 
</form> 

어쩌면 오류가 내 코 앞에 있지만, 약 3 일 동안이 작업을하고 있었고 r이 없었습니다. esult. 장고의 문서와 StackOverflow를 둘러싼 많은 다른 질문을 읽었지만 여전히 아무것도 얻지 못했습니다. 정말 도움이 필요합니다 ...

답변

3

귀하의보기 코드는별로 의미가 없습니다. 이전에 작성된 양식이 유효한지 확인한 후 양식의 새 인스턴스를 작성한 다음 오류 페이지로 리디렉션합니다. 따라서 귀하의 코드는 귀하의 질문에 설명 된대로 예상대로 작동하는 것처럼 보입니다.

def salvalivro(request): 
    form = LivroForm(request.POST or None, request.FILES or None) 
    if request.method == 'POST': 
     if form.is_valid(): 
      form.save() #or whatever else you need 
    return render(request, 'salvalivro.html', {'form': form}) 
+0

대단히 감사합니다! 하루 종일 VBScript (QlikView)로 작업하고 때로는 파이썬 들여 쓰기와 코드 구조가 다소 까다 롭습니다. 이제 완벽하게 작동합니다 : D –

+1

당신을 진심으로 환영합니다. 다행히 도울 수있어. VBScript보다 Python을 더 즐기시 길 바랍니다! – Brandon

+0

당신은 내가 내기 : –

3

보기가 매우 이상합니다. 게시물 인 경우 게시물 데이터를 사용하여 양식을 인스턴스화합니다. 그런 다음 유효한지 확인하십시오. 데이터가없는 양식을 다시 인스턴스화하고 유효하지 않은지 확인하십시오! 물론 두 번째 인스턴스화에는 데이터가 없으므로이 시점에서 유효하지 않습니다. 따라서 자연스럽게 항상 리다이렉트됩니다. 그러나 다시 한번 다른 뷰로 리다이렉트하고 있기 때문에, 폼에 의해 생성 된 실제 에러 메시지를 결코 볼 수 없을 것입니다.

using a form in a view의 표준 설명서를 자세히 살펴 봐야합니다. 정확한 패턴을 따라야합니다.

+0

나는 백만 번처럼, 거기보고, 내가 가지고 있던 상황에 적용 할 수 없습니다 :

은 (장고 1.3 가정) 대신이보기를보십시오. 전에 말했듯이, 오류는 내 코 앞에 있었고 나는 그것을 볼 수 없었습니다. 답변 주셔서 대단히 감사합니다. 너무 도움이되었습니다 :) –