2010-06-04 4 views
0

(1) est ainsi: http://code.google.com/intl/en/appengine/articles/djangoforms.htmlmeilleure façon de former la validation sur Gae

(2) est écrit par l'auto:

#/usr/bin/env python2.5 
#---------------------------- 
# Datastore models for user & signup 
#---------------------------- 

from base64 import b64encode as b64 
from hashlib import md5, sha256 
from random import randint 
from time import time 

from google.appengine.ext import db 


N_SALT = 8    # length of the password salt 


def salt_n_hash(password, salt=None): 
    """ 
    Generate a salt and return in base64 encoding the hash of the 
    password with the salt and the character '$' prepended to it. 
    """ 
    salt = salt or b64(''.join(chr(randint(0, 0xff)) for _ in range(N_SALT))) 
    return salt + '$' + b64(sha256(salt+password.encode("ascii")).digest()) 


class User(db.Model): 
    nickname = db.StringProperty(required=True) 
    email = db.EmailProperty(required=True) 
    pwd = db.StringProperty(required=True) 
    suspended = db.BooleanProperty(default=True) 

    @classmethod 
    def authenticate(klass, nickname, password): 
     """Return an User() entity instance if password is correct""" 
     user = klass.get_by_key_name(nickname) 
     if user: 
      n_salt = user.pwd.index('$') 
      if user.pwd == salt_n_hash(password, salt=user.pwd[:n_salt]): 
       return user 

    def __eq__(self, other): 
     return self.nickname == other.nickname 


def signup_id(nickname): 
    return md5(nickname + repr(time())).hexdigest() 


class UserSignup(db.Model): 
    user = db.ReferenceProperty(User, required=True) 
    date = db.DateProperty(auto_now_add=True) 

quelle manière est meilleure,

ou avez-vous eu une meilleure façon de faire, ex: une forme simple cadre de validation,

grâce

Répondre

1

Si vous utilisez Django, djangoforms est définitivement la solution. Si tipfy ou d'autres cadres légers, essayez wtforms (il est également dans le tipfy source tree).

+0

merci Alex, et saviez-vous que babel est facile à utiliser pour l'internationalisation, je l'ai vu, et je pense que c'est difficile, n'est-ce pas? – zjm1126

+0

et devrais-je utiliser tipfy au lieu de webapp .. – zjm1126

+0

Je trouve tipfy à peu près aussi facile à utiliser que webapp. Je n'ai pas utilisé les installations d'internationalisation dans tipfy ou django donc je ne peux pas commenter cela. –

Questions connexes