Posts Tagged ‘check length of chars n google app engine’

Google App Engine Server Side Validation Examples

October 21st, 2009
Google app engine uses “Django Form Validation Framework” for server side validation. I would like to show some examples on server side validation for Google app engine. So let’s have a look at the following validation rules we are going to try…
  • Email validation 
  • Number validation 
  • Empty check
  • Input length  
  • Login check

We will use default values and property class in the datastore model and “is_valid()” will make sure there is no input errors by users. First, we specify the Python module imports and Google App Engine imports for our application. Please note that we must import google.appengine.webapp.template before importing any Django modules
Example: 

import cgi
from django.core.paginator import InvalidPage
from django.core.paginator import ObjectPaginator
from google.appengine.api import users
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms

and next to create the Database Model….

class Test(db.Model):
   name = db.UserProperty()
   message = db.StringProperty(required=True)
   quantity = db.IntegerProperty(default=1)
   date = db.DateTimeProperty(auto_now_add=True)
   price = db.FloatProperty()
   email = db.EmailProperty()

Now, open main.py where you are saving your data. we need to create the form object based on the model….

class TestForm(djangoforms.ModelForm):
  class Meta:
    model = Test

 Before saving data, i’m assuming you have created your request handler form (e.g test.html)

def post(self):
    data = TestForm(data=self.request.POST) 

  if data.is_valid():
      save()
      self.redirect(‘/’)

            else:
                url = users.create_login_url(‘/’)
                self.response.out.write(‘You suck! enter some valid data’)

So what we are doing before inserting our input data in the datastore? As an example, we said quantity is an integer so it’s input value must be a number, message field cannot be empty as we set “required=true”. Like these we have set email property, date etc that will be checked by is_valid as it defined. But what about chars length and user logged in check?

we can do it like the following….

def post(self):
        user = users.get_current_user()
        msg = self.request.get(‘msg’)
        if len(msg)<140 and user:
            do_something()
            self.redirect(‘/’)
        else:
            url = users.create_login_url(‘/’)
            self.response.out.write(‘Input length checked and loggied in user not found!’)

to check types and property classes have a look here 

Get Adobe Flash playerPlugin by wpburn.com wordpress themes