Google App Engine のフォーム検証を行いたいのですが、方法がわかりません。私はこのように試しました:
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' : アンケートフォーム() }
そして、私はこのエラーメッセージを持っています:
トレースバック (最後の最後の呼び出し): ファイル "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp_ init _.py"、515 行目、call handler.get(*groups) ファイル "C:\ Program Files\Google\google_appengine\demos\b00213576\main.py"、144 行目、get self.response.out.write(template.render(path, template_values)) ファイル "C:\Program Files\Google\google_appengine\ google\appengine\ext\webapp\template.py", line 143, render return t.render(Context(template_dict)) File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template. py"、183 行目、wrap_render return orig_render(context) File "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 行目、レンダー ビット.append(self.render_node(node, context)) ファイル "C:\Program Files\Google\google_appengine\lib\django\django\template_ init _.py"、718 行目、render_node 内 return(node.render(context) ) ファイル "C:\Program Files\Google\google_appengine\lib\django\django\template\defaulttags.py"、209 行目、レンダリングで self.nodelist_true.render(context) ファイル "C:\Program Files\Google\ google_appengine\lib\django\django\ template_init_.py"、705 行目、render bits.append(self.render_node(node, context)) ファイル内 "C:\Program Files\Google\google_appengine\lib\django\django\template_ init _.py"、718 行目、render_node return(node.render(context))ファイル「C:\Program Files\Google\google_appengine\lib\django\django\template_init_.py 」、768行目、render return self.encode_output(output)ファイル内"C:\Program Files\Google\google_appengine\lib\django\django\template_ init _.py"、757 行目、encode_output return str(output) File "C:\Program Files\Google\google_appengine\lib\django\ django\newforms\util.py"、26 行目、str return self.unicode内行 232、 Unicode 値 = 値。力
() ファイル "C:\Program Files\Google\google_appengine\lib\django\django\newforms\util.py"、26 行目、strで 自己を返します。unicode ().encode(settings.DEFAULT_CHARSET) ファイル "C:\Program Files\Google\google_appengine\lib\django\django\newforms\widgets.py"、246 行目、ユニコードで u' を返す\n%s\n
' % u'\n'.join([u'%s ' % w for w in self]) File "C:\Program Files\Google\google_appengine\lib\django\django\newforms\widgets.py", line 238, in 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' オブジェクトは添え字を付けられません
別のケースでこの検証を行う方法を知っていますか?
私はこの種のものを使ってそれをやろうとしました:
class ItemUserAnswer(djangoforms.ModelForm):
クラス メタ: モデル = UserAnswer
しかし、このフォームにラベルを追加する方法がわからず、1 行で表示されます。何か提案はありますか?
なぜそれがまだ機能していないのか、私を夢中にさせてくれてありがとう:/