2016-05-29 10 views
0

Ich versuche HTML-Formular mit Djangos ModelForm-Klasse zu generieren. Es wird jedoch nicht generiert.Django ModelForm generiert kein HTML-Formular

Im Folgenden sind meine Dateien:

models.py

from __future__ import unicode_literals 

from django.db import models 


class Policy(models.Model): 
    policy_number = models.CharField(max_length = 9) 
    province = models.CharField(max_length = 15) 

    def __str__(self): 
     return self.policy_number 

    class Meta: 
     ordering = ('policy_number',) 

views.py

from django.shortcuts import render, redirect 
from django.http import HttpResponse 
from django.views.generic import View 
from .forms import * 


class MyView(View): 
    def get(self, request): 
     #message = "Hello Sourav" 
     policyForm = PolicyBaseForm(None) 
     print("policyform in GET", policyForm) 
     #context = {'message': message, 'policyForm': policyForm} 
     return render(request, 'autoins/index.html', {'policyForm': policyForm}) 

    def post(self, request): 
     policyForm = PolicyBaseForm(request.POST) 
     print("policyform in POST", policyForm) 
     if policyForm.is_valid(): 
      policyForm.save() 
      return redirect('autoins/successPage.html') 
     return HttpResponse("Error saving form data") 
# def request_method(request): 
#  return HttpResponse("Result") 

forms.py

from django import forms 
from .models import * 


# class PolicyBaseForm(forms.ModelForm): 
#  class Meta: 
#   model = Policy 
#   fields = ('policy_number', 'province') 
print("in form") 


class PolicyBaseForm(forms.ModelForm): 
    policy_number = forms.CharField(max_length = 9, label = "Policy Number") 
    province = forms.CharField(max_length = 15, label = "Province") 

    class Meta: 
     model = Policy 
     fields = ("policy_number",) 

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
    <form role = "form" method = post action = "{%url 'homepage'%}"> 
     {%csrf_token%} 
     {{policyform}}   
     <input type="submit" value="Done"> 
    </form> 
</body> 
</html> 

urls.py

from django.conf.urls import url 
from autoins.views import * 
#from autoins import views 

#from myinsurancesite.autoins.views import MyView 
print('in au') 
urlpatterns = [ 
    url(r'^home/', MyView.as_view(), name = 'homepage'), 
    #url(r'^success/'MyView.as_view(), name = 'success'), 
    #url(r'^home/', views.request_method, name = "request_method"), 

] 

Alles, was ich in Browser sehe ist die Submit-Button, die ich in der Datei index.html innerhalb Formular-Tags zur Verfügung gestellt haben. Ich bin nicht in der Lage, die automatisch generierten Formularfelder w.r.t Modellfelder zu sehen.

+0

policyForm unterscheidet sich von policyform – e4c5

+0

Was für ein dummer Fehler. Ich fühle mich dumm. Vielen Dank – Sourav

Antwort

2

Sie müssen {{ policyForm }} nicht {{ policyform }} tun.