2009-09-13 3 views
0

아주 간단한 장고 앱을 쓰려고합니다. 내 서식 파일 내 양식을 표시 할 수 없습니다.django newbie. ModelForm에 문제가있다

<form ...> 
{{form.as_p}} 
</form> 

이것은 전혀 표시되지 않습니다. 제출 버튼을 추가하면 해당 버튼 만 표시됩니다.

forms.Form을 상속 한 양식 개체를 선언해야합니까? ModelForms로 끝낼 수 있다고 생각하십니까?

[업데이트] 해결! 내 URL을에서

(당신의 시간을 낭비하고 사과) 내가 가진 파일 :

(r'login/$','portal.views.register') 

을 그리고 네, 나는 끔찍한 느낌 :

(r'login/$',direct_to_template, {'template':'register.html'} 

은 전환.

배경 :

나는 학생용 모델이 있으며, 등록 페이지가 있습니다. 액세스 할 때 학생 이름을 묻는 텍스트 필드가 표시되어야합니다. 학생이 해당 필드를 완성하면 저장합니다.

def register(request):                                 
      if request.method == 'POST': 
        form = StudentForm(request.POST) 
        if form.is_valid(): 
          form.save() 
          return render_to_response('/thanks/') 
      else: 

        student = Student() 
        form = StudentForm(instance =student) 

      return render_to_response('register.html',{'form':form}) 
+0

새 학생을 만드는 데 인스턴스를 전달할 필요가 없습니다. 양식이 작동하지 않는지 확실하지는 않지만 확실히 불필요합니다. –

+0

불량 : 내 urls.py 파일에 direct_to_template 함수를 사용하고 있습니다. 감사합니다! – Tom

답변

2

문제는보기에 있습니다

#models.py 

class Student(models.Model): 
    name = models.CharField(max_length =50) 

#forms.py 
class StudentForm (forms.ModelForm): 
    class Meta: 
     model = Student 

그래서, 여기에 내 생각이다. 데이터베이스에서 검색 할 기존 학생 오브젝트가 없습니다. 다음 코드 샘플은 "만들기"보기를 ​​구현하는 데 도움이됩니다.

보조 메모로, direct_to_template 제네릭보기 기능을 사용하여 좀 더 편하게 생활 할 수 있습니다.

def add_student(request): 
    if request.method == 'POST': 
     form = StudentForm(request.POST) 
     if form.is_valid(): 
     new_student = form.save() 

     return HttpResponseRedirect('/back/to/somewhere/on/success/') 
    else: 
     form = StudentForm() 

    return direct_to_template(request, 
           'register.html', 
           {'form':form}) 
+0

감사하지만 처음 URL에 액세스 할 때 양식이 계속 표시되지 않습니다. 그래도 팁을 볼 것입니다. – Tom

+0

죄송합니다, 틀림없이 옳습니다. – Tom

관련 문제