1、JS 正则

    test   - 判断字符串是否符合规定的正则    有就是 true

        rep = /\d+/;

        rep.test("asdfoiklfasdf89asdfasdf")

        # true

        rep = /^\d+$/;

        rep.test("asdfoiklfasdf89asdfasdf")

        # true

    exec   - 获取匹配的数据

        rep = /\d+/;

        str = "wangshen_67_houyafa_20"

        rep.exec(str)

        # ["67"]

        JavaScript is more fun than Java or JavaBeans!

        var pattern = /\bJava(\w*)\b/;

        # ["JavaScript", "Script"]

        JavaScript is more fun than Java or JavaBeans!

        var pattern = /\bJava\w*\b/g;

        # ["JavaScript"]

        # ["Java"]

        # ["JavaBeans"]

        # null

        JavaScript is more fun than Java or JavaBeans!

        var pattern = /\bJava(\w*)\b/g;

        # ["JavaScript",'Script']

        # ["Java", ""]

        # ["JavaBeans", "Beans"]

        # null

    多行匹配:

        默认就是多行匹配

        ^$

   - 登录注册验证

        默认事件先执行:

            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;

            })   

    后端:python实现

    业务处理

    ....

2、组件

    BootStrap

        - css

        - js

    学习 BootStrap 规则

    一、响应式

        @media

    二、图标、字体

        @font-face

    三、基本使用

    ========》 后台管理

    jQueryUI *

        - css

        - js

    学习 jQueryUI 规则

    EasyUI

        - css

        - js

    学习 jQueryUI 规则

    ============ Ajax操作 ================

3、WEB框架

    MVC

        Model       View       Controller

        数据库   模板文件    业务处理

    MTV

        Model    Template     View

        数据库   模板文件    业务处理

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

4、Django

    pip3 install django

    C:\Python35\Scripts

C:\WINDOWS\system32>cd  /d d:\Python\www

d:\Python\www>

d:\Python\www>

d:\Python\www>c:\Python35\Scripts\django-admin.exe    startproject hello

    # 创建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         ##

    # 运行Django功能

    python manage.py runserver 127.0.0.1:8001

    chouti

        - chouti

            - 配置

        - 主站 app

        - 后台管理 app

    # 创建app

    python manage.py startapp cmdb

    python manage.py startapp openstack

    python manage.py startapp xxoo....

    app:

        migrations     数据修改表结构 记录

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

        apps           配置当前app

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

        tests          单元测试

        views          业务代码

    1、配置模板的路径

        TEMPLATES = [

                {

                    'BACKEND': 'django.template.backends.django.DjangoTemplates',

                    'DIRS': [os.path.join(BASE_DIR, 'templates')],

                    'APP_DIRS': True,

                    'OPTIONS': {

                        'context_processors': [

                            'django.template.context_processors.debug',

                            'django.template.context_processors.request',

                            'django.contrib.auth.context_processors.auth',

                            'django.contrib.messages.context_processors.messages',

                        ],

                    },

                },

            ]

    2、配置静态目录

        static

        STATICFILES_DIRS = (

            os.path.join(BASE_DIR, 'static'),

        )

        <link rel="stylesheet" href="/static/commons.css" />

项目

内容整理

    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" --> 函数名

from cmdb.views import  login,index

urlpatterns = [

    url(r'^admin/', admin.site.urls),

    url(r'^login',login),

    url(r'^index',index),

]

    7、定义视图函数

<form class="m-t" role="form" action="/login"  method="post">

<input type="text"  name="user" class="form-control" placeholder="用户名" required="">

<input type="password" name="password" class="form-control" placeholder="密码" required="">

</form>

        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、模板渲染

        特殊的模板语言

           from  django.shortcuts import render,redirect

            -- {

{ 变量名 }}

                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>

XXOO管理:

    MySQL

    SQLAlchemy

    主机管理(8列):

        IP

        端口

        业务线

        ...

    用户表:

        用户名

        密码

    功能:

        1、 登录

        2、主机管理页面

            - 查看所有的主机信息(4列)

            - 增加主机信息(8列) ** 模态对话框

        3、查看详细

            url:

                "detail" -> detail

            def detail(reqeust):

                nid = request.GET.get("nid")

                v = select * from tb where id = nid

                ...

        4、删除

            del_host -> delete_host

            def delete_host(request):

                nid = request.POST.get('nid')

                delete from tb where id = nid

                return redirect('/home')