看看那些参考文献等,我一直无法想出把所有东西连在一起的好方法。问题涉及在表单无效时发回表单和内容。所以我正在做的是逐项拉出每个生成的表单并显示在.html文件中。
所以我的问题是。我如何让这个工作。现在我可以使用css样式表显示表单,但我似乎无法在该字段上进行验证,而且我总是生成错误。
class Quote(db.Model):
email = db.StringProperty(required=True)
class QuoteForm(djangoforms.ModelForm):
class Meta:
model = Quote
exclude = ['entry_time']
class MainPage(webapp.RequestHandler):
def get(self):
form = QuoteForm();
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, {'form': form}))
def post(self):
data = QuoteForm(data=self.request.POST)
if data.is_valid():
# save here
self.redirect('/Confirm.html')
else:
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, {'form': data}))
和.html文件的部分在这里
<div>
{{ form.email.errors }}
<label for="id_email">Your e-mail address:</label>
{{ form.email }}
</div>
我放入电子邮件字段中的任何内容都无法正确验证。我不知道为什么!?我丢失了我已经填写的信息。如何保留此信息并实际进行适当的验证。该模型表明只需要一个非空字符串,但没有任何东西能满足验证。
答案 0 :(得分:1)
您可以将自己的属性添加到Django用于呈现表单元素的小部件(即控件)中。这包括CSS样式的class
属性:
class QuoteForm(djangoforms.ModelForm):
email = EmailField(widget = TextInput(attrs={'class':'textfield'}))
class Meta:
model = Quote
exclude = ['entry_time']
缺点是您需要在表单类中明确指定模型中的字段。