day_18 正则及Django

前端之家收集整理的这篇文章主要介绍了day_18 正则及Django前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、正则表达式

1、定义正则表达式

  • /.../ 用于定义正则表达式

  • /.../g 表示全局匹配

  • /.../i 表示不区分大小写

  • /.../m 表示多行匹配
    JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)

  1. varpattern=/^Java\w*/gm;
  2. vartext="JavaScriptismorefunthan\nJavaEEorJavaBeans!";
  3. result=pattern.exec(text)
  4. result=pattern.exec(text)
  5. result=pattern.exec(text)

注:定义正则表达式也可以reg= new RegExp()

2、匹配

JavaScript中支持正则表达式,其主要提供了两个功能

  • test(string) 检查字符串中是否和正则匹配

  1. rep=/\d+/;
  2. rep.test("asdfoiklfasdf89asdfasdf")#true
  3. rep=/^\d+$/;
  4. rep.test("123456789")#true

# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

  • exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

  1. 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
  2.  
  3. 非全局模式
  4. 获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
  5. varpattern=/\bJava\w*\b/;
  6. vartext="JavaScriptismorefunthanJavaorJavaBeans!";
  7. result=pattern.exec(text)
  8.  
  9. varpattern=/\b(Java)\w*\b/;
  10. vartext="JavaScriptismorefunthanJavaorJavaBeans!";
  11. result=pattern.exec(text)
  12.  
  13. 全局模式
  14. 需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
  15. varpattern=/\bJava\w*\b/g;
  16. vartext="JavaScriptismorefunthanJavaorJavaBeans!";
  17. result=pattern.exec(text)
  18.  
  19. varpattern=/\b(Java)\w*\b/g;
  20. vartext="JavaScriptismorefunthanJavaorJavaBeans!";
  21. result=pattern.exec(text)

字符串中相关方法

  1. obj.search(regexp)获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
  2. obj.match(regexp)获取匹配内容搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
  3. obj.replace(regexp,replacement)替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
  4. $数字:匹配的第n个组内容
  5. $&:当前匹配的内容
  6. $`:位于匹配子串左侧的文本;
  7. $':位于匹配子串右侧的文本
  8. $$:直接量$符号

二、登录注册验证

  1. 默认事件先执行:
  2. checkBox
  3. 自定义先执行
  4. a
  5. submit
  6. ...
  7. <form>
  8.  
  9. <inputtype='type'/>
  10. <inputtype='password'/>
  11. <inputtype='submit'/>
  12.  
  13. </form>
  14.  
  15. $(':submit').click(function(){
  16.  
  17. $(':text,:password').each(function(){
  18. ...returnfalse;
  19. })returnfalse;
  20. })
  21.  
  22. input,checBox
  23.  
  24. ==================================验证================================
  25. JS:验证
  26.  
  27. 各种验证
  28.  
  29. $(':submit').click(function(){
  30.  
  31. $(':text,:password').each(function(){
  32. ...returnfalse;
  33. })returnfalse;
  34. })

三、组件

1.BootStrap

下载:http://www.bootcss.com/

学习 BootStrap 规则
  一、响应式
    @media

例:响应式布局

  1. <!DOCTYPEhtml>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .c1{
  8. background-color:red;
  9. height:50px;
  10. }
  11. @media(min-width:700px){
  12. .c2{
  13. background-color:grey;
  14. }
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <divclass="c1c2"></div>
  20. </body>
  21. </html>

二、图标、字体
    @font-face
  三、基本使用

加个最先应用的格式

  1. <style>
  2. .no-redus{
  3. border-radius:0px;!important;
  4. }
  5. </style>

2.jQUeryUI *

下载:http://jqueryui.com/

3.EasyUI

下载:http://www.jeasyui.net/

修改css并应用

4.jquery.bxslider轮播图

http://bxslider.com/ 下载引用

  1. <!DOCTYPEhtml>
  2. <htmllang="en">
  3. <head>
  4. <Metacharset="UTF-8">
  5. <title>Title</title>
  6. <linkrel="stylesheet"href="jquery.bxslider/jquery.bxslider.css">
  7. </head>
  8. <body>
  9. <ulclass="bxslider">
  10. <li><imgsrc="image/1.png"style="width:500px;height:200px;"/></li>
  11. <li><imgsrc="image/1.png"style="width:500px"/></li>
  12. <li><imgsrc="image/1.png"style="width:500px"/></li>
  13. </ul>
  14.  
  15. <scriptsrc="js/jquery-1.12.4.js"></script>
  16. <scriptsrc="jquery.bxslider/jquery.bxslider.js"></script>
  17. <script>
  18. $(document).ready(function(){
  19. $('.bxslider').bxSlider();
  20. });
  21. </script>
  22. </body>
  23. </html>

四、web框架

MVC

Model View Controller
数据库 模板文件 业务处理

MTV

Model Template View
数据库 模板文件 业务处理

############## WEB:MVC、MTV

Web框架本质

众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

  1. #!/usr/bin/envpython#coding:utf-8
  2. importsocket
  3. defhandle_request(client):
  4. buf=client.recv(1024)
  5. client.send("HTTP/1.1200OK\r\n\r\n")
  6. client.send("Hello,Seven")
  7. defmain():
  8. sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  9. sock.bind(('localhost',8000))
  10. sock.listen(5)
  11. whileTrue:
  12. connection,address=sock.accept()
  13. handle_request(connection)
  14. connection.close()
  15. if__name__=='__main__':
  16. 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。

  1. #!/usr/bin/envpython#coding:utf-8
  2. fromwsgiref.simple_serverimportmake_server
  3. defRunServer(environ,start_response):
  4. start_response('200OK',[('Content-Type','text/html')])return['<h1>Hello,web!</h1>'.encode('utf-8'),]
  5. if__name__=='__main__':
  6. httpd=make_server('',8000,RunServer)print"ServingHTTPonport8000..."
  7. httpd.serve_forever()

五、Django

1.安装

  1. pip3installdjango

2.创建Django工程

  1. django-adminstartproject【工程名称

例如:工程名称为mysite;那么mysite目录下会产生如下目录及文件

mysite
  - mysite # 对整个程序进行配置
    - init
    - settings # 配置文件
    - url # URL对应关系
    - wsgi # 遵循WSIG规范,uwsgi + Nginx
  - manage.py # 管理Django程序:
    - python manage.py
    - python manage.py startapp xx
    - python manage.py makemigrations
    - python manage.py migrate

Bottle默认支持多种基于WSGI的服务,如:

  1. server_names={
  2. '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

  1. pythonmanage.pyrunserver127.0.0.1:8001

4.创建APP

  1. pythonmanage.pystartappcmdb

- migrations 数据修改表结构

- admin Django为我们提供的后台管理

- apps 配置当前app

- models ORM,写指定的类 通过命令可以创建数据库结构

- tests 单元测试

- views 业务代码

示例:表单验证



内容整理

  1. 1.创建Django工程
  2. django-adminstartproject工程名
  3.  
  4. 2.创建APP
  5. cd工程名
  6. pythonmanage.pystartappcmdb
  7.  
  8. 3静态文件
  9. project.settings.py
  10.  
  11. STATICFILES_DIRS=(
  12. os.path.join(BASE_DIR,"static"),)
  13.  
  14. 4、模板路径
  15.  
  16. DIRS==>[os.path.join(BASE_DIR,'templates'),]
  17.  
  18. 5settings
  19.  
  20. middlerware
  21. #注释csrf
  22.  
  23.  
  24. 6、定义路由规则
  25. url.py
  26. "login"-->函数
  27.  
  28. 7、定义视图函数
  29. appviews.py
  30. deffunc(request):#request.methodGET/POST
  31.  
  32. #http://127.0.0.1:8009/home?nid=123&name=alex
  33. #request.GET.get('',None)#获取请求发来的而数据
  34.  
  35. #request.POST.get('',None)
  36.  
  37.  
  38. #returnHttpResponse("字符串")
  39. #returnrender(request,"HTML模板的路径")
  40. #returnredirect('/只能填URL')
  41.  
  42. 8、模板渲染
  43. 特殊的模板语言
  44.  
  45. --{{变量名}}
  46. deffunc(request):returnrender(request,"index.html",{'current_user':"alex"})
  47.  
  48.  
  49. index.html
  50.  
  51. <html>
  52. ..
  53. <body>
  54. <div>{{current_user}}</div>
  55. </body>
  56.  
  57. </html>
  58.  
  59. ====>最后生成的字符串
  60.  
  61. <html>
  62. ..
  63. <body>
  64. <div>alex</div>
  65. </body>
  66.  
  67. </html>
  68. --For循环deffunc(request):returnrender(request,{'current_user':"alex",'user_list':['alex','eric']})
  69.  
  70.  
  71. index.html
  72.  
  73. <html>
  74. ..
  75. <body>
  76. <div>{{current_user}}</div>
  77.  
  78. <ul>
  79. {%forrowinuser_list%}
  80.  
  81. {%ifrow=="alex"%}
  82. <li>{{row}}</li>
  83. {%endif%}
  84.  
  85. {%endfor%}
  86. </ul>
  87.  
  88. </body>
  89.  
  90. </html>
  91. #####索引#################
  92. deffunc(request):returnrender(request,'eric'],'user_dict':{'k1':'v1','k2':'v2'}})
  93.  
  94.  
  95. index.html
  96.  
  97. <html>
  98. ..
  99. <body>
  100. <div>{{current_user}}</div>
  101.  
  102. <a>{{user_list.1}}</a>
  103. <a>{{user_dict.k1}}</a>
  104. <a>{{user_dict.k2}}</a>
  105.  
  106. </body>
  107.  
  108. </html>
  109. ######条件
  110.  
  111. deffunc(request):returnrender(request,"age":18,'k2':'v2'}})
  112.  
  113.  
  114. index.html
  115.  
  116. <html>
  117. ..
  118. <body>
  119. <div>{{current_user}}</div>
  120.  
  121. <a>{{user_list.1}}</a>
  122. <a>{{user_dict.k1}}</a>
  123. <a>{{user_dict.k2}}</a>
  124.  
  125. {%ifage%}
  126. <a>有年龄</a>
  127. {%ifage>16%}
  128. <a>老男人</a>
  129. {%else%}
  130. <a>小鲜肉</a>
  131. {%endif%}
  132. {%else%}
  133. <a>无年龄</a>
  134. {%endif%}
  135. </body>
  136.  
  137. </html>

猜你在找的正则表达式相关文章