標籤:view *args utf-8 odi 使用者 驗證 false opened name
(2017-8-6 17:47:18) 表單驗證 02
#!/usr/bin/env python# -*- coding:utf-8 -*-import tornado.ioloopimport tornado.webimport ioimport reclass Ipfile: REGULAR=‘.*‘ # Regex # regular="^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$" def __init__(self,error_dict=None,required=True): #requried 表示不可為空 self.error_dict={} if error_dict: self.error_dict.update(error_dict) # 更新錯誤表 self.required=required #true #傳入到對象當中 self.error=None self.is_valid=False self.value=None def validate(self,name,input_value): if not self.required : # 如果是not true就不能通過,是not false的時候就能,即 required = false #可以為空白 print(‘self.required‘, self.required) # testttttttttttt self.is_valid=True self.value=input_value # 值封裝在裡面 # 這裡應該有些問題 else: #否則就是 required = True if not input_value.strip(): if self.error_dict.get(‘required‘,None): # 如果能擷取到值 # 找是否有填錯誤資訊 self.error=self.error_dict[‘require‘] # 就直接等於給的值 else: self.error = "%s is valid" % name else: ret = re.match(Ipfile.REGULAR, input_value) if ret: self.is_valid=True self.value=input_value else: ret=re.match(Ipfile.REGULAR,input_value) #跟給定正則匹配 print(‘ret‘, ret) # testttttttttttt if ret: #匹配成功 self.is_valid=True self.value=input_value #匹配成功就用使用者輸入的值賦值給類裡面的value else: if self.error_dict.get(‘valid‘,None): # 如果有提供錯誤資訊 self.error=self.error_dict[‘valid‘] else: self.error="%s is valid" % nameclass Baseform(object): def __init__(self): pass # self.host = "(.*)" # self.ip = "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$" # self.port = ‘(\d+)‘ # self.phone = ‘^1[3|4|5|8][0-9]\d{8}$‘ def check_valid(self, handle): flag=True value_dict={} error_message_dict={} success_value_dict={} for key, regular in self.__dict__.items(): # regular 繼承前是Regex 繼承後是對象ipfile key = ‘ip‘ print(‘regular‘, regular) # testttttttttttt input_value=handle.get_argument(key) #擷取使用者輸入的值 print(‘input_value‘,input_value) #testttttttttttt regular.validate(key, input_value) # 執行ipfile if regular.is_valid: success_value_dict[key]=regular.value print(‘success_value_dict‘, success_value_dict) # testttttttttttt else: error_message_dict[key]= regular.error print(‘error_message_dict‘,error_message_dict) #testttttttttttt flag=False value_dict[key]=input_value return flag,success_value_dict,error_message_dictclass Homeform(Baseform): def __init__(self): # self.ip=Ipfile(required=True) self.phone=Ipfile(required=True)class IndexHandler(tornado.web.RequestHandler): def get(self): # callback=self.get_argument(‘callback‘) # self.write(‘%s ([11,22,33]);‘ % callback) self.render(‘index.html‘) def post(self, *args, **kwargs): # obj=MainForm() # is_valid,value_dict=obj.check_valid(self) # if is_valid: # print(value_dict) passclass Homehandler(tornado.web.RequestHandler): def get(self): self.render(‘home.html‘) def post(self): obj=Homeform() is_valid,success_dict,error_dict=obj.check_valid(self) print(‘error_dict‘,error_dict) #testttttttttttt if is_valid: print(‘sccess‘,success_dict) else: print(‘error‘,error_dict) self.render(‘home.html‘) # print(is_valid,success_dict,error_dict)settings = { ‘template_path‘: ‘views‘, ‘static_path‘: ‘statics‘, ‘static_url_prefix‘: ‘/statics/‘,}application = tornado.web.Application([ (r"/index", IndexHandler), (r"/home", Homehandler),], **settings)if __name__ == "__main__": application.listen(8088) tornado.ioloop.IOLoop.instance().start()
View Code
Html form表單驗證