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

  • 相关阅读:
    Asp.net2.0 中自定义过滤器对Response内容进行处理 dodo
    自动化测试工具 dodo
    TestDriven.NET 2.0——单元测试的好助手(转) dodo
    JS弹出窗口的运用与技巧 dodo
    ElasticSearch 简介 规格严格
    修改PostgreSQL字段长度导致cached plan must not change result type错误 规格严格
    Linux系统更改时区(转) 规格严格
    mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法 规格严格
    ElasticSearch 集群 & 数据备份 & 优化 规格严格
    Elasticsearch黑鸟教程22:索引模板的详细介绍 规格严格
  • 原文地址:https://www.cnblogs.com/youngcheung/p/6143158.html
Copyright © 2011-2022 走看看