我想做谷歌应用程序引擎表单验证但我不知道该怎么做? 我试过这样:
from google.appengine.ext.db import djangoforms
from django import newforms as forms
class SurveyForm(forms.Form):
occupations_choices = (
('1', ""),
('2', "Undergraduate student"),
('3', "Postgraduate student (MSc)"),
('4', "Postgraduate student (PhD)"),
('5', "Lab assistant"),
('6', "Technician"),
('7', "Lecturer"),
('8', "Other" )
)
howreach_choices = (
('1', ""),
('2', "Typed the URL directly"),
('3', "Site is bookmarked"),
('4', "A search engine"),
('5', "A link from another site"),
('6', "From a book"),
('7', "Other")
)
boxes_choices = (
("des", "Website Design"),
("svr", "Web Server Administration"),
("com", "Electronic Commerce"),
("mkt", "Web Marketing/Advertising"),
("edu", "Web-Related Education")
)
name = forms.CharField(label='Name', max_length=100, required=True)
email = forms.EmailField(label='Your Email Address:')
occupations = forms.ChoiceField(choices=occupations_choices, label='What is your occupation?')
howreach = forms.ChoiceField(choices=howreach_choices, label='How did you reach this site?')
# radio buttons 1-5
rating = forms.ChoiceField(choices=range(1,6), label='What is your occupation?', widget=forms.RadioSelect)
boxes = forms.ChoiceField(choices=boxes_choices, label='Are you involved in any of the following? (check all that apply):', widget=forms.CheckboxInput)
comment = forms.CharField(widget=forms.Textarea, required=False)
我想这样显示:
template_values = {
'url' : url,
'url_linktext' : url_linktext,
'userName' : userName,
'item1':SurveyForm() }
我收到此错误消息:
追踪(最近一次通话): 文件“C:\ Program Files \ Google \ google_appengine \ google \ appengine \ ext \ webapp_ init _。py”,第515行,致电 handler.get(*基团) 文件“C:\ Program Files \ Google \ google_appengine \ demos \ b00213576 \ main.py”,第144行,获取 self.response.out.write(template.render(path,template_values)) 文件“C:\ Program Files \ Google \ google_appengine \ google \ appengine \ ext \ webapp \ template.py”,第143行,在渲染中 return t.render(Context(template_dict)) 在wrap_render中输入文件“C:\ Program Files \ Google \ google_appengine \ google \ appengine \ ext \ webapp \ template.py”,第183行 return orig_render(context) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第168行,渲染 return self.nodelist.render(context) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第705行,在渲染中 bits.append(self.render_node(node,context)) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第718行,在render_node中 回报(node.render(上下文)) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template \ defaulttags.py”,第209行,渲染 return self.nodelist_true.render(context) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第705行,在渲染中 bits.append(self.render_node(node,context)) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第718行,在render_node中 回报(node.render(上下文)) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第768行,在渲染中 return self.encode_output(输出) 在encode_output中输入文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ template_ init _。py”,第757行 return str(输出) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ util.py”,第26行, str return self。 unicode ()。encode(settings.DEFAULT_CHARSET) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ forms.py”,第73行, unicode return self.as_table() 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ forms.py”,第144行,as_table return self._html_output(u'%(label)s%(errors)s%(field)s%(help_text)s',u'%s','',u'\ n%s',False) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ forms.py”,第129行,_html_output output.append(normal_row%{'errors':bf_errors,'label':label,'field':unicode(bf),'help_text':help_text}) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ forms.py”,第232行, unicode value = value。 str () 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ util.py”,第26行, str return self。 unicode ()。encode(settings.DEFAULT_CHARSET) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ widgets.py”,第246行, unicode 返回你'
\ n%s \ n
'%u'\ n'.join([u'%s '%w代表自己的w] ) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ widgets.py”,第238行, iter yield RadioInput(self.name,self.value,self.attrs.copy(),choice,i) 文件“C:\ Program Files \ Google \ google_appengine \ lib \ django \ django \ newforms \ widgets.py”,第212行, init self.choice_value = smart_unicode(choice [0]) TypeError:'int'对象是unsubscriptable
您是否知道如何在不同情况下进行此验证?
我尝试过这样做:
class ItemUserAnswer(djangoforms.ModelForm):
类元: model = UserAnswer
但我不知道如何在此表单中添加额外的标签,它会显示在一行中。 你有什么建议吗?
非常感谢,因为它让我疯狂为什么它仍然不起作用:/
答案 0 :(得分:1)
内置方法is_valid()
应该验证。
提交表单时,我使用HTTP POST
def post(self):
try:
upload_files = self.get_uploads('file') # 'file' is file upload field in the form
if upload_files:
blob_info = upload_files[0]
except:
self.response.out.write('File not uploaded')
try:
data = AForm(data=self.request.POST)
if data and data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.added_by = users.get_current_user()
entity.put()
if upload_files:
im = Image(reference=entity)
im.primary_image = blob_info.key()
im.put()
entity.put()
self.redirect('/serve/%s' % blob_info.key())
else:
# Reprint the form
self.response.out.write('<html><body>'
'<form method="POST" '
'action="/">'
'<table>')
self.response.out.write(data)
self.response.out.write('</table>'
'<input type="submit">'
'</form></body></html>')
except:
self.redirect('/serve/%s' % blob_info.key())
答案 1 :(得分:0)
这是问题
rating = forms.ChoiceField(choices = range(1,6),label ='你的职业是什么?',widget = forms.RadioSelect)
选项设置为整数值。