zoukankan      html  css  js  c++  java
  • Python之路Day18-正则及Django

    一、 正则表达式

    1、定义正则表达式

      • /.../  用于定义正则表达式
      • /.../g 表示全局匹配
      • /.../i 表示不区分大小写
      • /.../m 表示多行匹配
        JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)
    var pattern = /^Javaw*/gm;
    var text = "JavaScript is more fun than 
    JavaEE or JavaBeans!";
    result = pattern.exec(text)
    result = pattern.exec(text)
    result = pattern.exec(text)
    View Code

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

     2、匹配

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

    • test(string)     检查字符串中是否和正则匹配
    rep = /d+/;
    rep.test("asdfoiklfasdf89asdfasdf")
    # true
            
    rep = /^d+$/;
    rep.test("123456789")
    # true

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

    • exec(string)    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
     
    非全局模式
        获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
        var pattern = /Javaw*/;
        var text = "JavaScript is more fun than Java or JavaBeans!";
        result = pattern.exec(text)
     
        var pattern = /(Java)w*/;
        var text = "JavaScript is more fun than Java or JavaBeans!";
        result = pattern.exec(text)
     
    全局模式
        需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
        var pattern = /Javaw*/g;
        var text = "JavaScript is more fun than Java or JavaBeans!";
        result = pattern.exec(text)
     
        var pattern = /(Java)w*/g;
        var text = "JavaScript is more fun than Java or JavaBeans!";
        result = pattern.exec(text)

    字符串中相关方法

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

     二、登录注册验证

            默认事件先执行:
                checkbox
            自定义先执行
                a
                submit
                ...
            <form>
                
                <input type='type' />
                <input type='password' />
                <input type='submit' />
                
            </form>
       
            $(':submit').click(function(){
                
                $(':text,:password').each(function(){
                    ...
                    return false;
                })
                return false;
            })   
       
            input,checbox
       
        ================================== 验证 ================================
        JS: 验证
             
             各种验证
             
                $(':submit').click(function(){
                    
                    $(':text,:password').each(function(){
                        ...
                        return false;
                    })
                    return false;
                })  

     三、组件

    1.BootStrap

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

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .c1{
                background-color: red;
                height: 50px;
            }
            @media (min- 700px) {
                .c2{
                background-color: grey;
            }
            }
        </style>
    </head>
    <body>
        <div class="c1 c2"></div>
    </body>
    </html>
    响应式布局

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

    加个最先应用的格式

        <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/ 下载引用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="jquery.bxslider/jquery.bxslider.css">
    </head>
    <body>
    <ul class="bxslider">
      <li><img src="image/1.png"  style=" 500px;height: 200px;"/></li>
      <li><img src="image/1.png"  style=" 500px"/></li>
      <li><img src="image/1.png"  style=" 500px"/></li>
    </ul>
    
    <script src="js/jquery-1.12.4.js"></script>
    <script src="jquery.bxslider/jquery.bxslider.js"></script>
    <script>
        $(document).ready(function(){
            $('.bxslider').bxSlider();
        });
    </script>
    </body>
    </html>
    View Code

     四、web框架

     MVC

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

    MTV

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

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

     Web框架本质

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

    #!/usr/bin/env python
    #coding:utf-8
      
    import socket
      
    def handle_request(client):
        buf = client.recv(1024)
        client.send("HTTP/1.1 200 OK
    
    ")
        client.send("Hello, Seven")
      
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.bind(('localhost',8000))
        sock.listen(5)
      
        while True:
            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/env python
    #coding:utf-8
     
    from wsgiref.simple_server import make_server
     
    def RunServer(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return ['<h1>Hello, web!</h1>'.encode('utf-8'),]
     
    if __name__ == '__main__':
        httpd = make_server('', 8000, RunServer)
        print "Serving HTTP on port 8000..."
        httpd.serve_forever()

     五、Django

     1.安装

    pip3 install django

     2.创建Django工程

    django-admin startproject 【工程名称】

    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的服务,如:

    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,
    }
    View Code

     3.运行Django功能

    语法:python manage.py runserver ip:port

    python manage.py runserver 127.0.0.1:8001

     4.创建APP

    python manage.py startapp cmdb

     - migrations 数据修改表结构

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

    - apps 配置当前app

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

    - tests 单元测试

    - views 业务代码

    示例:表单验证

    内容整理

        1. 创建Django工程
                django-admin startproject 工程名
    
        2. 创建APP
            cd 工程名
            python manage.py startapp cmdb
    
        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
                
                def func(request):
                    # request.method   GET / POST
                    
                    # http://127.0.0.1:8009/home?nid=123&name=alex
                    # request.GET.get('',None)   # 获取请求发来的而数据
                    
                    # request.POST.get('',None)
                    
                    
                    # return HttpResponse("字符串")
                    # return render(request, "HTML模板的路径")
                    # return redirect('/只能填URL')
                    
        8、模板渲染
            特殊的模板语言
            
                -- {{ 变量名 }}
            
                    def func(request):
                        return render(request, "index.html", {'current_user': "alex"})
            
                        
                    index.html
                    
                    <html>
                    ..
                        <body>
                            <div>{{current_user}}</div>
                        </body>
                    
                    </html>
                    
                    ====> 最后生成的字符串
                    
                    <html>
                    ..
                        <body>
                            <div>alex</div>
                        </body>
                    
                    </html>
                -- For循环
                    def func(request):
                        return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})
            
                        
                    index.html
                    
                    <html>
                    ..
                        <body>
                            <div>{{current_user}}</div>
                            
                            <ul>
                                {% for row in user_list %}
                                
                                    {% if row == "alex" %}
                                        <li>{{ row }}</li>
                                    {% endif %}
                                    
                                {% endfor %}
                            </ul>
                            
                        </body>
                    
                    </html>
                    
                #####索引################# 
                    def func(request):
                        return render(request, "index.html", {
                                    'current_user': "alex", 
                                    'user_list': ['alex','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>
                
                ###### 条件
                
                    def func(request):
                        return render(request, "index.html", {
                                    'current_user': "alex", 
                                    "age": 18,
                                    'user_list': ['alex','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>
                            
                            {% if age %}
                                <a>有年龄</a>
                                {% if age > 16 %}
                                    <a>老男人</a>
                                {% else %}
                                    <a>小鲜肉</a>
                                {% endif %}
                            {% else %}
                                <a>无年龄</a>
                            {% endif %}
                        </body>
                    
                    </html>
    内容整理

    1

  • 相关阅读:
    假脱机技术
    HTTP报文
    字符串转换成浮点数的方法
    表变量与临时表空间
    规范浮点数
    什么是批处理
    浅谈性能测试、压力测试和负载测试
    关于CSDN的一个安全漏洞
    HttpWatch7.0测试工具
    vbscript能做什么
  • 原文地址:https://www.cnblogs.com/youngcheung/p/6143158.html
Copyright © 2011-2022 走看看