我試圖運行和驗證窗體,但有一些問題。它不顯示錶單,而是顯示當表單無效時顯示的HttpResponse。表單驗證錯誤?
這裏是我的模型:
class Preference(models.Model):
CLASS_CHOICES = [('1', '1'), ('2', '2'), ('3', '3')]
BOARD_CHOICES = [('C', 'CBSE'), ('I', 'ICSE'), ('S', 'State Board')]
SLOT_CHOICES = [('M', 'Morning'), ('A', 'AfterNoon'), ('E', 'Evening')]
SUBJECT_CHOICES = [('H', 'HINDI'), ('M', 'MATH'), ('E', 'ENGLISH')]
LOCATION_CHOICES = [('M', 'My Home'), ('T', 'I am willing to travel')]
GENDER_CHOICES = [('M', 'Male'), ('F', 'Female'), ('B', 'Both are Fine')]
Class = models.CharField(max_length=2, choices=CLASS_CHOICES, default='1', blank=False)
Board = models.CharField(max_length=2, choices=BOARD_CHOICES, default='C', blank=False)
Subject = models.CharField(max_length=2, choices=SUBJECT_CHOICES, default='M', blank=False)
Frequency = models.IntegerField(default=7)
Slot = models.CharField(max_length=2, choices=SLOT_CHOICES, default='E', blank=False)
Location = models.CharField(max_length=2, choices=LOCATION_CHOICES, default='M', blank=False)
Gender = models.CharField(max_length=2, choices=GENDER_CHOICES, default='M', blank=False)
Address = models.CharField(max_length=250, blank=True)
Travel = models.IntegerField(default=5)
Name = models.CharField(max_length=50, blank=True)
Contact = models.IntegerField(default=100)
這裏是我的形式:
class PreferenceForm(forms.ModelForm):
class Meta:
model = Preference
fields = ['Class', 'Board', 'Subject', 'Frequency', 'Slot', 'Location', 'Gender', 'Address',
'Travel', 'Name', 'Contact']
widgets = {
'Board': forms.RadioSelect(),
'Subject': forms.CheckboxSelectMultiple(),
'Slot': forms.CheckboxSelectMultiple(),
'Location': forms.CheckboxSelectMultiple(),
'Gender': forms.RadioSelect() }
這是我的觀點:
def pref2(request):
form = PreferenceForm(request.POST or None)
if form.is_valid():
prefer = form.save(commit=False)
prefer.save()
return HttpResponse('Order Complete')
else:
return HttpResponse('Some Problem')
當我運行的應用程序,它只是顯示沒有顯示錶格的'Some Problem'這一行。所有的幫助/建議表示感謝,謝謝。
你能打印出form.errors,看看有沒有什麼東西存在嗎? – JacobIRR
你不是把你的HttpResponse設置爲'Some Problem'嗎?你不應該發送('一些問題:'+ request.form) – Adrianopolis
@Adrianopolis在這樣做的形式顯示,但它不工作。 –