Html form表單驗證

來源:互聯網
上載者:User

標籤: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表單驗證

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.