Google App Engine + form validation

I would like to do a Google engine form validation, but I don’t know how to do this? I tried like this:

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)

And I wanted to show it as follows:

template_values = {
        'url' : url,
        'url_linktext' : url_linktext,
        'userName' : userName,

'item1': SurveyForm ()}

And I have this error message:

Traceback (last last call): File "C: \ Program Files \ Google \ google_appengine \ google \ appengine \ ext \ webapp_init_.py", line 515, to the call    handler.get(* )    "C:\Program Files\Google\google_appengine\demos\b00213576\main.py", 144, get     self.response.out.write(template.render(, template_values))    "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", 143,     return t.render( (template_dict))    "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", 183, wrap_render     return orig_render ()    "C:\Program Files\Google\google_appengine\lib\django\django\template_init_.py" , 168,     return self.nodelist.render()    "C:\Program Files\Google\google_appengine\lib\django\django\template_init_.py" , 705,     bits.append(self.render_node (node, ))    "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()    "C:\Program Files\Google\google_appengine\lib\django\django\template_init_.py" , 705,     bits.append(self.render_node (node, ))    "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 ()    "C:\Program Files\Google\google_appengine\lib\django\django\template_init_.py" , 757, encode_output     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,     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% () s% () s% (help_text) s', u '% s', '', u '
% 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,     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,     return u '

  • \n% s\n
'% u '\n'.join([u' % s '% w w self])   " C:\Program Files\Google\google_appengine\lib\django\django\newforms\widgets.py ", 238, iter     RadioInput (self.name, self.value, self.attrs.copy(), , i)   " C:\Program Files\Google\google_appengine\lib\django\django\newforms\widgets.py", 212, init    self.choice_value = smart_unicode ( [0]) TypeError: 'int'

- , ?

, :

class ItemUserAnswer(djangoforms.ModelForm):

: model = UserAnswer

, , . - ?

, , :/

+3
2

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

rating = forms.ChoiceField(choice = range (1,6), label = ' ? ", widget = forms.RadioSelect)

.

0

Source: https://habr.com/ru/post/1781692/


All Articles