day_18 正则及Django
一、正则表达式 1、定义正则表达式
varpattern=/^Javaw*/gm; vartext="JavaScriptismorefunthannJavaEEorJavaBeans!"; result=pattern.exec(text) result=pattern.exec(text) result=pattern.exec(text) 注:定义正则表达式也可以reg= new RegExp() 2、匹配 JavaScript中支持正则表达式,其主要提供了两个功能:
rep=/d+/; rep.test("asdfoiklfasdf89asdfasdf")#true rep=/^d+$/; rep.test("123456789")#true # 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$
获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。 非全局模式 获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配) varpattern=/bJavaw*b/; vartext="JavaScriptismorefunthanJavaorJavaBeans!"; result=pattern.exec(text) varpattern=/b(Java)w*b/; vartext="JavaScriptismorefunthanJavaorJavaBeans!"; result=pattern.exec(text) 全局模式 需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕 varpattern=/bJavaw*b/g; vartext="JavaScriptismorefunthanJavaorJavaBeans!"; result=pattern.exec(text) varpattern=/b(Java)w*b/g; vartext="JavaScriptismorefunthanJavaorJavaBeans!"; result=pattern.exec(text) 字符串中相关方法 obj.search(regexp)获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效) obj.match(regexp)获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部 obj.replace(regexp,replacement)替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项, $数字:匹配的第n个组内容; $&:当前匹配的内容; $`:位于匹配子串左侧的文本; $':位于匹配子串右侧的文本 $$:直接量$符号 二、登录注册验证 默认事件先执行: checkbox 自定义先执行 a submit ... <form> <inputtype='type'/> <inputtype='password'/> <inputtype='submit'/> </form> $(':submit').click(function(){ $(':text,:password').each(function(){ ...returnfalse; })returnfalse; }) input,checbox ==================================验证================================ JS:验证 各种验证 $(':submit').click(function(){ $(':text,:password').each(function(){ ...returnfalse; })returnfalse; }) 三、组件 1.BootStrap 下载:http://www.bootcss.com/ 学习 BootStrap 规则 例:响应式布局 <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Title</title> <style> .c1{ background-color:red; height:50px; } @media(min-width:700px){ .c2{ background-color:grey; } } </style> </head> <body> <divclass="c1c2"></div> </body> </html> 二、图标、字体 加个最先应用的格式 <style> .no-redus{ border-radius:0px;!important; } </style> 2.jQUeryUI * 下载:http://jqueryui.com/ 3.EasyUI 下载:http://www.jeasyui.net/ 修改css并应用 4.jquery.bxslider轮播图 http://bxslider.com/ 下载引用 <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Title</title> <linkrel="stylesheet"href="jquery.bxslider/jquery.bxslider.css"> </head> <body> <ulclass="bxslider"> <li><imgsrc="image/1.png"style="width:500px;height:200px;"/></li> <li><imgsrc="image/1.png"style="width:500px"/></li> <li><imgsrc="image/1.png"style="width:500px"/></li> </ul> <scriptsrc="js/jquery-1.12.4.js"></script> <scriptsrc="jquery.bxslider/jquery.bxslider.js"></script> <script> $(document).ready(function(){ $('.bxslider').bxSlider(); }); </script> </body> </html> 四、web框架 MVC Model View Controller MTV Model Template View ############## WEB:MVC、MTV Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 #!/usr/bin/envpython#coding:utf-8 importsocket defhandle_request(client): buf=client.recv(1024) client.send("HTTP/1.1200OKrnrn") client.send("Hello,Seven") defmain(): sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind(('localhost',8000)) sock.listen(5) whileTrue: connection,address=sock.accept() handle_request(connection) connection.close() if__name__=='__main__': main() 上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py 等。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。这样,服务器程序就需要为不同的框架提供不同的支持。这样混乱的局面无论对于服务器还是框架,都是不好的。对服务器来说,需要支持各种不同框架,对框架来说,只有支持它的服务器才能被开发出的应用使用。这时候,标准化就变得尤为重要。我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器。 WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。 python标准库提供的独立WSGI服务器称为wsgiref。 #!/usr/bin/envpython#coding:utf-8 fromwsgiref.simple_serverimportmake_server defRunServer(environ,start_response): start_response('200OK',[('Content-Type','text/html')])return['<h1>Hello,web!</h1>'.encode('utf-8'),] if__name__=='__main__': httpd=make_server('',8000,RunServer)print"ServingHTTPonport8000..." httpd.serve_forever() 五、Django 1.安装 pip3installdjango 2.创建Django工程 django-adminstartproject【工程名称】 例如:工程名称为mysite;那么mysite目录下会产生如下目录及文件。 mysite Bottle默认支持多种基于WSGI的服务,如: server_names={ 'cgi':CGIServer,'flup':FlupFCGIServer,'wsgiref':WSGIRefServer,'waitress':WaitressServer,'cherrypy':CherryPyServer,'paste':PasteServer,'fapws3':FapwsServer,'tornado':TornadoServer,'gae':AppEngineServer,'twisted':TwistedServer,'diesel':DieselServer,'meinheld':MeinheldServer,'gunicorn':GunicornServer,'eventlet':EventletServer,'gevent':GeventServer,'geventSocketIO':GeventSocketIOServer,'rocket':RocketServer,'bjoern':BjoernServer,'auto':AutoServer,} 3.运行Django功能 语法:python manage.py runserver ip:port pythonmanage.pyrunserver127.0.0.1:8001 4.创建APP pythonmanage.pystartappcmdb - migrations 数据修改表结构 - admin Django为我们提供的后台管理 - apps 配置当前app - models ORM,写指定的类 通过命令可以创建数据库结构 - tests 单元测试 - views 业务代码 示例:表单验证 内容整理 1.创建Django工程 django-adminstartproject工程名 2.创建APP cd工程名 pythonmanage.pystartappcmdb 3、静态文件 project.settings.py STATICFILES_DIRS=( os.path.join(BASE_DIR,"static"),) 4、模板路径 DIRS==>[os.path.join(BASE_DIR,'templates'),] 5、settings中 middlerware #注释csrf 6、定义路由规则 url.py "login"-->函数名 7、定义视图函数 app下views.py deffunc(request):#request.methodGET/POST #http://127.0.0.1:8009/home?nid=123&name=alex #request.GET.get('',None)#获取请求发来的而数据 #request.POST.get('',None) #returnHttpResponse("字符串") #returnrender(request,"HTML模板的路径") #returnredirect('/只能填URL') 8、模板渲染 特殊的模板语言 --{{变量名}} deffunc(request):returnrender(request,"index.html",{'current_user':"alex"}) index.html <html> .. <body> <div>{{current_user}}</div> </body> </html> ====>最后生成的字符串 <html> .. <body> <div>alex</div> </body> </html> --For循环deffunc(request):returnrender(request,{'current_user':"alex",'user_list':['alex','eric']}) index.html <html> .. <body> <div>{{current_user}}</div> <ul> {%forrowinuser_list%} {%ifrow=="alex"%} <li>{{row}}</li> {%endif%} {%endfor%} </ul> </body> </html> #####索引################# deffunc(request):returnrender(request,'eric'],'user_dict':{'k1':'v1','k2':'v2'}}) index.html <html> .. <body> <div>{{current_user}}</div> <a>{{user_list.1}}</a> <a>{{user_dict.k1}}</a> <a>{{user_dict.k2}}</a> </body> </html> ######条件 deffunc(request):returnrender(request,"age":18,'k2':'v2'}}) index.html <html> .. <body> <div>{{current_user}}</div> <a>{{user_list.1}}</a> <a>{{user_dict.k1}}</a> <a>{{user_dict.k2}}</a> {%ifage%} <a>有年龄</a> {%ifage>16%} <a>老男人</a> {%else%} <a>小鲜肉</a> {%endif%} {%else%} <a>无年龄</a> {%endif%} </body> </html> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |