2012-03-15 6 views
0

안녕하세요. 미리 감사드립니다. 템플릿에 렌더링되지 않는 django 폼이 있습니다. "제출"버튼이 렌더링되지만 양식은 렌더링되지 않습니다. 저는이 코드를 약 6 시간 꼼짝 않고 바라 보았습니다. 아마 매우 간단 할 것입니다. 아마 또 다른 한 쌍의 눈이 필요할 것입니다.장고 양식이 렌더링되지 않습니다.

내 모델 :

#models.py 

from django.db import models 
from django.forms import ModelForm 

class DraftInput(models.Model): 
    player_id = models.IntegerField(help_text = 'Input Player ID Number', max_length = 5) 

    def __unicode__(self): 
     return self.player_id 

class DraftForm(ModelForm): 
    class Meta: 
     model = DraftInput 

내보기 :

#views.py 

from django.shortcuts import render_to_response 

from simple.models import DraftInput 
from simple.models import DraftForm 

from django.template import RequestContext 

#...  

def draft_view(request): 

    if request.method == 'POST': 
     form = DraftForm(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = DraftForm() 

    return render_to_response('simple/draft_input.html', {'form': form}) 

내 템플릿 :

#draft_input.html 

#... 

     <h1>Draft Input</h1> 
     <h2>Draft</h2><br /><br /> 
      <form method="POST" action=""> 
      <table>{{ form }}</table> 
      <input type="submit" value="Draft Player" /> 
     </form><br /><br /> 
#... 

당신의 도움에 감사드립니다.

+1

표시되는 내용을 보려면 소스를 보았습니까? –

+0

새 뷰를 사용하기 위해'urls.py'를 수정하는 것을 잊었 기 때문에 나는이 정확한 문제를 겪었습니다. 그것은 일시적으로 추가 한 TemplateView를 사용했습니다. – moooeeeep

답변

0

예를 들어 {{ form.as_p }}을 시도해보십시오. 다른 바로 가기가 있습니다. 양식을 수동으로 만들 수도 있습니다. Django 문서를 살펴보십시오. https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs

+0

나는'{{form.as_p}} '을 기쁘게 생각하지 않아 피곤했다. 지금 추천하는 문서를 확인하겠습니다. 고맙습니다! – dpbklyn

+0

설명서를 읽은 후에도 코드가 작동하지 않습니다. 다른 제안있어? – dpbklyn

+0

django 디버그 도구 모음을 설치하고 양식이 컨텍스트로 렌더링되는지 확인할 수 있습니다. – Jingo

0

html 파일에 "form"대신 "form.as_p"또는 "form.as_table"을 사용해보십시오.

편집 : 문서 체크 아웃과 모델로 자신의 예제 중 하나를 사용하여 예에서 https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

, 당신은 잘못 될 수 있습니다 모델에서 폼 매개 변수를 정의합니다. DraftForm 클래스의 help_text와 같은 양식 수정을 DraftInput 모델에 남기고 싶습니다.

이것은 간단한 문제입니다. 문서에서 무언가를 복제 한 다음 원하는대로 작업해야합니다.

희망이 도움이됩니다.

+0

는 행운이없는 모든 3을 시도했습니다. 고맙습니다! – dpbklyn

+0

제안을 시도하고 설명서를 읽은 후에도 코드가 작동하지 않습니다. 다른 제안있어? – dpbklyn

+0

@ dpbklyn이 내 대답에 더 많은 정보를 추가했습니다. 행운을 빕니다. – zallarak

2

{{ form.as_table }}을 사용하거나 양식 태그 주변에서 <table></table>을 제거하십시오.

+0

이것은 작동하지 않았다 ... 나는 희망이 있었다. 나는'{{form.as_table}} '을 사용하고'

'태그를 계속 사용했다. – dpbklyn

+0

제안을 시도하고 설명서를 읽은 후에도 코드가 작동하지 않습니다. 다른 제안있어? – dpbklyn

1

나는 제네릭 클래스에 이동하는 기호라고 생각합니다 :) 그냥 views.py 파일에서 CreateView 클래스

을 시도 :

<form method="POST" action="."> 
    <table> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <input type="submit" /> 
    </table> 
</form> 
:

class CreateDraftInputView(CreateView): 
    model = DraftInput 
    template_name = "test/draftinput_form.html" 
    success_url = "/test/listdraft/" 

간단한 템플릿을 생성

매우 urls.py의 간단한 레코드 목록 :

, (r"^listdraft/$", ListView.as_view(model = DraftInput, template_name = "draftinput_list.html")) 
+0

누군가 제네릭 뷰가 제네릭 클래스보다 낫다고 생각합니다. :) –

6

답변 스레드를 읽는 것은 여전히 ​​운이 좋지 않은 것 같습니다.

django 대화 형 셸 (python manage.py shell)에서이 명령을 수행해보십시오. 폼의 서식을 지정하려고하면 예외가 throw 될 수 있습니다. 템플릿에서 폼이 생성되는 동안 예외가 발생하면 HTML에 많은 내용이 표시되지 않습니다. 그러나 장고 껍데기는 대개 범인을 발표합니다.

python manage.py shell 

In [1]: from simple.models import DraftForm 

In [2]: form = DraftForm() 

In [3]: form.as_p() 

여기에서 생성 된 HTML을 보거나 예외를 잡을 수 있습니다. 이것은 당신이 고칠 필요가있는 것에 대해 더 많이 알려줄 것입니다.

관련 문제