jS正则和WEB框架Django的入门

简介: JS正则 -test 判断字符串是否符合规定的正则表达式 -exec 获取匹配的数据 test的例子: 从上述的例子我们可以看出,如果rep.test匹配到了就返回true,否则返回false exec的例子 上述匹配的结果是一个数组,但是不管匹配几次都只显示第一个 正则...

 

JS正则

-test 判断字符串是否符合规定的正则表达式

-exec 获取匹配的数据

test的例子:

从上述的例子我们可以看出,如果rep.test匹配到了就返回true,否则返回false

exec的例子

上述匹配的结果是一个数组,但是不管匹配几次都只显示第一个

正则中的分组

全局匹配

 

没有分组的情况下,会依次从第一个开始取,获取到最后一个如果再次获取,就会获得null,然后再冲第一个开始

如果这个时候采用分组效果如下:

 

正则表达式

/…/ 用于定义正则表达式

/…/g 表示全局匹配

/…/i 表示不区分大小写

/../m 表示多行匹配

这里的多行匹配需要注意:

默认情况下js的正则匹配就是多行匹配

通过下面例子理解加上m之后的正则匹配

从例子可以看出只匹配到第一行的内容,第二行的并没有匹配,这里是因为整个text是一个字符串,所以当出现^以什么开头的时候,是从这个字符串开头开始的,所以只能匹配到一个,如果这个时候想要匹配到多个,实现方法就是通过m参数

这样相当于都是把每一行作为一个字符串去匹配所以匹配到第二行的Java

 

 

关于事件的执行顺序

 

有很多标签有自己的事件,同时我们也可以再次给他赋予权限,这样就会产生顺序的问题

默认事件先执行:

checkbox标签

自定义事件先执行(大部分都是自定义事件优先级高):

a标签 submit标签

关于checkbox事件执行顺序的一个验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="checkbox" />
<script src="jquery-1.12.4.js"></script>
<script>
    $(":checkbox").click(function () {
        var v = $(this).prop('checked');
        console.log(v);
    })
</script>
</body>
</html>

 

分析:

如果是自己定义的事件先执行,那么当选中的时候首先应该打印false,然后被选中,但是打印的是true,所以,可以判断是checkbox是默认事件先执行

组件

 

BootStrap  ----推荐使用这个

响应式:

@media

代码例子:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            background-color: red;
            height: 50px;

        }
        @media (min-width: 700px) {
            .c2{
                background-color: green;
            }
        }
    </style>
</head>
<body>
    <div class="c1 c2"></div>
</body>
</html>

从效果可以看出

当窗口小于一定值的时候,显示为红色

 

 

 

图标文字

@font-face

 

在使用的时候一个关键的地方:

在css样式的时候如果想要某个css样式优先级最高,例子如下:

        .c3{
            border-radius: 0 !important;
        }

就可以实现c3的css样式优先级最高,无论在上面还是在下面都会被应用

 

下面的两个偏向于后台管理

jQueryUI

EasyUI 

类似的插件有很多,例如想实现一个轮播图的效果:

则可以通过bxslider实现

代码如下:

<!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="images/1.jpg" /></li>
    <li><img src="images/2.jpg"/></li>
    <li><img src="images/3.jpg" /></li>
    <li><img src="images/4.jpg" /></li>
</ul>

    <script src="jquery-1.12.4.js"></script>
    <script src="jquery.bxslider/jquery.bxslider.js"></script>
<script>
    $(document).ready(function () {
        $('.bxslider').bxSlider();
    });
</script>

</body>
</html>

WEB框架

 

MVC框架:

Model   View     Controller

数据库   模板文件 业务处理

 

MTV:Django就是MTV框架

Model      Template   View

数据库      模板文件    业务处理

 

Django

 

pip2 install django

安装好之后

D:\python35\Scripts目录下会有:django-admin.exe

下面通过命令创建一个简单的project

ango-admin startproject 工程名

jango-admin startproject mysite

会生成一个如下mysite目录:

mysite
 -mysite
    -_init_.py
    -settings.py        #配置文件
    -urls.py            #url对应关系
    -wsgi.py              #遵循WSGI规范,实际用uwsig+nginx
 -manage.py             #管理Django规范
                         这里可以执行:
                            --python manage.py
                             --python manage.py start xx
                            --python manage.py makemigrations
                            --python manage.py migrate

启动上述创建的mysite

通过python manage.py runserver就可以启动,这里也可以加参数127.0.0.1::8001这样就能定义启动的端口,启动过程如下:

 

D:\mysite>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migration
s for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 06, 2016 - 20:49:54
Django version 1.10.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

然后登陆http://127.0.0.1:8000/

这样就表示成功了

创建app命令

python manage.py startapp app名称

python manage.py startapp cmdb

 

生成如上图的目录

在views.py里添加如下代码:

from django.shortcuts import HttpResponse

def home(request):
    return HttpResponse('<h1>CMDB</h1>')

同时在mysite目录下urls.py里添加如下:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^aa.html/',views.home ),
]

这样登录

 

 

关于app目录的解释:

migrations   存放修改表结构时的记录

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

apps.py      配置当前app

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

tests.py     用于做单元测试

views.py      业务代码

 

写一个简单的例子

在cmdb下的views.py里写如下代码:

from django.shortcuts import render

 

def login(request):

    return render(request,'login.html')

login.html放在templates下

这里没有填写绝对路径是已经为在setting里已经进行了配置:

在myDjango目录下的urls.py写如下代码:

 

from cmdb import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login),
]
整个目录如下:

整个目录如下:

 

登录效果如下:

关于静态文件的存放

这是目录结构

将css以及js放在一个static目录下

login.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/common.css" />
    <style>
        label{
            width: 80px;
            text-align: right;
            display: inline-block;
        }
    </style>
</head>
<body>
    <form action="/login" method="post">
        <p>
            <label for="username">用户名:</label>
            <input id="username" type="text" />
        </p>
        <p>
            <label for="password">密码:</label>
            <input id="password" type="text" />
            <input type="submit" value="提交" />
        </p>
    </form>
    <script src="/static/jquery-1.12.4.js"></script>
</body>
</html>

 

settings.py配置文件中的配置:

STATIC_URL = '/static/'
STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static'),
)

css中给背景添加了灰色

从结果中也可以看出js和css都加载成功

获取用户的信息

views.py中的代码如下:

from django.shortcuts import render
from django.shortcuts import redirect

def login(request):
    print(request.method)
    error_msg = ""
    if request.method == "POST":
        user = request.POST.get("user",None)
        pwd = request.POST.get("pwd",None)
        print(user,pwd)
        if user == "root" and pwd == "123":
            return redirect('http://www.baidu.com')
        else:
            error_msg="用户名密码错误"
    return render(request,'login.html',{'error_msg':error_msg})

html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/common.css" />
    <style>
        label{
            width: 80px;
            text-align: right;
            display: inline-block;
        }
    </style>
</head>
<body>
    <form action="login" method="POST">
        <p>
            <label for="username">用户名:</label>
            <input name = "user" id="username" type="text" />
        </p>
        <p>
            <label for="password">密码:</label>
            <input name="pwd" id="password" type="text" />
            <input type="submit" value="提交" />
            <span style="color:red;">{{ error_msg }}</span>
        </p>
    </form>
    <script src="/static/jquery-1.12.4.js"></script>
</body>
</html>

红色的为添加的内容

这样就实现了对输入用户和密码的判断

输入的账户和密码不匹配的时候:

如果正确则会跳转到百度

下面是一个完整的例子

 

 

views.py中的代码如下:

from django.shortcuts import render
from django.shortcuts import redirect

def login(request):
    print(request.method)
    error_msg = ""
    if request.method == "POST":
        user = request.POST.get("user",None)
        pwd = request.POST.get("pwd",None)
        print(user,pwd)
        if user == "root" and pwd == "123":
            return redirect('/home')
        else:
            error_msg="用户名密码错误"
    return render(request,'login.html',{'error_msg':error_msg})


USER_LIST =[
    {"username":"zhaofan","gender":"男","email":"hjzhaofan@163.com",},
    {"username":"zhaoy","gender":"男","email":"aofan@163.com",},
    {"username":"zssan","gender":"女","email":"hjzhaofan@163.com",}
]

def home(request):
    if request.method == "POST":
        u = request.POST.get('username')
        g = request.POST.get('gender')
        e = request.POST.get('email')
        temp = temp = {"username":u,"gender":g,"email":e}
        USER_LIST.append(temp)

    return render(request,'home.html',{'user_list':USER_LIST})

urls.py中的代码如下:

from django.conf.urls import url
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login', views.login),
    url(r'^home', views.home),
]

home.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="margin:0;">

    <div style="height: 48px;background-color: #dddddd"></div>
    <div>
        <form action="/home" method="POST">
            <input type="text" name = "username" placeholder="用户名">
            <input type="text" name = "gender" placeholder="性别">
            <input type="text" name = "email" placeholder="邮箱">
            <input type="submit" value="添加">
        </form>
    </div>
    <div>
        <table border="1">
            <thead>
            <tr>
                <th>姓名</th>
                <th>性别</th>
                <th>邮箱</th>
            </tr>
            </thead>
            <tbody>

                {% for row in user_list %}
                    <tr>
                        <td>{{ row.username }}</td>
                        <td>{{ row.gender }}</td>
                        <td>{{ row.email }}</td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>
</body>
</html>

login.html的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/common.css" />
    <style>
        label{
            width: 80px;
            text-align: right;
            display: inline-block;
        }
    </style>
</head>
<body>
    <form action="login" method="POST">
        <p>
            <label for="username">用户名:</label>
            <input name = "user" id="username" type="text" />
        </p>
        <p>
            <label for="password">密码:</label>
            <input name="pwd" id="password" type="text" />
            <input type="submit" value="提交" />
            <span style="color:red;">{{ error_msg }}</span>
        </p>
    </form>
    <script src="/static/jquery-1.12.4.js"></script>
</body>
</html>

运行结果如下:

输入正确的用户名和密码提交,跳转到home页面

 

 

这里可以添加新的数据:

知识点整理:

 

创建Django工程

django-admin startproject 工程名

 

创建APP

cd 工程名

python manage.py startapp cmdb

 

静态文件

project.settings.py

     

STATICFILES_DIRS = (

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

)

  

模板路径

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

     

settings中

middlerware

# 注释 csrf

       

定义路由规则

url.py

"login" --> 函数名

 

定义视图函数

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')

 

          

模板渲染

特殊的模板语言

-- {{ 变量名 }}

     

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循环比较特殊:

{% for index in range(20)%}

   ………

{%endfor%}

同时在模板语言中,都是有开始有结束

 

在模板语言中的索引

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>

在模板语言中通过{{ user_list.1 }}方式获取内容

所有的努力都值得期许,每一份梦想都应该灌溉!
目录
相关文章
|
22天前
|
开发框架 JavaScript 安全
js开发:请解释什么是Express框架,以及它在项目中的作用。
Express是Node.js的Web开发框架,简化路由管理,支持HTTP请求处理。它采用中间件系统增强功能,如日志和错误处理,集成多种模板引擎(EJS、Jade、Pug)用于HTML渲染,并提供安全中间件提升应用安全性。其可扩展性允许选用合适插件扩展功能,加速开发进程。
|
29天前
|
监控 安全 应用服务中间件
python中Django入门(四)
python中Django入门(四)
28 0
|
7天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
1天前
|
域名解析 Linux PHP
[CTF]ctfshow web入门
[CTF]ctfshow web入门
8 0
|
1天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
5 1
|
1天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
4天前
|
JavaScript 前端开发 API
框架分析(3)-Vue.js
框架分析(3)-Vue.js
|
5天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
13天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
23天前
|
安全 测试技术 网络安全
Web安全基础入门+信息收集篇
学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法及实现安全测试,能独立理解WEB架构框架,树立渗透测试开展思路!
18 0
Web安全基础入门+信息收集篇