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 }}方式获取内容

所有的努力都值得期许,每一份梦想都应该灌溉!
目录
相关文章
|
14天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
109 2
|
14天前
|
XML JavaScript 前端开发
JavaScript控制台:提升Web开发技能的秘密武器
作为Web开发人员,掌握JavaScript控制台中的各种方法至关重要。本文介绍了22种实用的console方法,从基本的log()到高级的profile()和memory,每种方法都配有示例和说明,帮助开发者更高效地调试和记录信息。通过了解这些工具,您可以优化代码、提高开发速度,减少错误,使编码过程更加顺畅愉快。
33 1
JavaScript控制台:提升Web开发技能的秘密武器
|
2天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
22 10
|
4天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
13 4
|
3天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
12 1
|
14天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
16 4
|
15天前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
12 1
|
15天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
25 1
|
17天前
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
13天前
|
网络协议 安全 JavaScript
Web实时通信的学习之旅:WebSocket入门指南及示例演示
Web实时通信的学习之旅:WebSocket入门指南及示例演示
80 0