GAE + Джанго Формы + Валидация - PullRequest
2 голосов
/ 23 декабря 2010

У меня проблема с тем, как сделать проверку на GAE. Я прочитал много уроков, и я подготовил форму django, и я хотел ее проверить, но я не вижу сообщений об ошибках eny в коде моей веб-страницы и не вижу ошибок, когда значения плохие.

import cgi
import os

from google.appengine.ext.webapp import template
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import users
from google.appengine.ext import db
from google.appengine.ext.db import djangoforms
from django import newforms as forms


class SurveyForm(forms.Form):
occupations_choices = (
    ('0', "Choose one..."),
    ('1', "Undergraduate student"),
    ('2', "Postgraduate student (MSc)"),
    ('3', "Postgraduate student (PhD)"),
    ('4', "Lab assistant"),
    ('5', "Technician"),
    ('6', "Lecturer"),
    ('7', "Other" )
    )

howreach_choices = (
    ('0', "Choose one..."),        
    ('1', "Typed the URL directly"),
    ('2', "Site is bookmarked"),
    ('3', "A search engine"),
    ('4', "A link from another site"),
    ('5', "From a book"),
    ('6', "Other")
    )

boxes_choices = (
    ("des", "Website Design"),
    ("svr", "Web Server Administration"),
    ("com", "Electronic Commerce"),
    ("mkt", "Web Marketing/Advertising"),
    ("edu", "Web-Related Education")
    )

range_choice = (
    ('1', '1'),
    ('2', '2'),
    ('3', '3'),
    ('4', '4'),
    ('5', '5')
    )

name = forms.CharField(label='Enter your name', max_length=50, 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_choice , label='How would you rate the content     of this site?', widget=forms.RadioSelect)

boxes = forms.ChoiceField(choices=boxes_choices, label='Are you involved in any of the following? (check all that apply)', widget=forms.CheckboxSelectMultiple)
comment = forms.CharField(label=('Any other comments?'), widget=forms.Textarea(attrs={'cols': 40, 'rows': 10}), required=False)

class MainHandler(webapp.RequestHandler):  
def get(self):
    user = users.get_current_user()    
    if user:
        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
        userName = user.nickname()

    else:
        url = users.create_login_url(self.request.uri)
        url_linktext = 'Login'
        userName = ''

    template_values = {
        'url' : url,
        'url_linktext' : url_linktext,
        'userName' : userName,
        'form' : SurveyForm(),
        }

    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

def post(self):
    user = users.get_current_user()    
    if user:
        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
        userName = user.nickname()
            #self.response.out.write(index.html)

    else:
        url = users.create_login_url(self.request.uri)
        url_linktext = 'Login'
        userName = ''

    template_values = {
        'url' : url,
        'url_linktext' : url_linktext,
        'userName' : userName,
        'form' : SurveyForm(),
            }

    form = SurveyForm(self.request.POST)
    if self.request.get('submit') == 'Submit the Form':
        if form.is_valid():
           self.response.out.write("Poprawne dane")
        else:
            form = SurveyForm()
            template_values['form']=form
            path = os.path.join(os.path.dirname(__file__), 'index.html')
            self.response.out.write(template.render(path, template_values))
    else:
        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values)) 

application = webapp.WSGIApplication([('/', MainHandler)],
                                     debug=True)


def main():

run_wsgi_app(application)


if __name__ == '__main__':
main()

Знаете ли вы, может быть, любой учебник - хороший учебник, как это сделать? Мой index.html:

 <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Survey</title>
            </head>
<body>

{% if userName %}
 You are loged in like: {{ userName }}      <a href="{{ url }}">{{ url_linktext }} </a>
 <hr><br/><b>Fill in the form: </b><br/>
 <form action="/" method="Post">
 {{ form.as_p() }}
 <input type="submit" name="submit" value="Submit the Form">
 </form>
{% else %}
 Please, log in:      <a href="{{ url }}">{{ url_linktext }}</a>
{% endif %}
            </body>
            </html>

Как это сделать, проверка начала показывать мне ошибки? И быть как "нормальная проверка"? Я думал, что когда я буду использовать фреймворк, мне будет намного легче и быстрее, но я потратил 2 дня, и он все еще не работает: / Я мог бы написать свою собственную проверку в это время: /

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 05 марта 2011

Посмотрите на {{ form.some_field.errors }}, или, если вам нужны все из них, {{ form.errors }}, или, если вам нужны только неполевые ошибки, {{ form.non_field_errors }}.

Вот пример того, как это сделать: http://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...