一、text 判断字符串是否符合规定的正则表达式css
rep = /\d+/;html
rep.test('sadkjfh287dadlk') #这个判断后面的字符串符合不符合前面的rep正则表达式符合就返回true反之falsepython
二、exec 获取匹配到的数据jquery
rep = /\d+/;nginx
rep.exec('asdasd123dasd321') # 结果为 '123' 这个只要找到第一个匹配项就不会继续找下去,返回的也是第一匹配项正则表达式
var pattern = /\bJava(\w*)\b/; # 这个表示的是匹配的是一个单词 数据库
# 其中的\b通常指单词边界(空格、空行、标、tab)至关于单词的分隔符 如 dada dadsa aswdx 里面的 'dada'和'dadsa' 'aswdx'认为是一个可是django
pattern.exec('JavaScript is more fun than Java or JavaBeans!')浏览器
# 结果为['JavaScript', 'Script'] 这个就是分组产生的他会匹配第一个匹配的字符并返回匹配到的字符和分组里面的字符app
var pattern = /\bJava\w*\b/g; #这个后面加了一个g表示匹配全部
pattern.exec('JavaScript is more fun than Java or JavaBeans!') # 这个执行一次就出一个结果一直到找到空的再从头到为再找
# ['JavaScript'],['Java'],['JavaBeans'] , ['',''] # 会把整个字符串中符合正则的都匹配出来不像上面的只要匹配到就不匹配
var pattern = /\bJava(\w*)\b/g # 这个就是匹配出全部并把每一项做为一个列表前面是匹配项后面的分组中的值
pattern.exec('JavaScript is more fun than Java or JavaBeans!') # 这个执行一次就出一个结果一直到找到空的再从头到为再找
#['JavaScript', 'Script']、['Java','']、['JavaBeans','Beans']、['','']
正则表达式的一些意思
/…/ 用于定义正则表达式
/…/g 表示全局匹配
/…/i 表示不区分大小写
/../m 表示多行匹配
记住js在默认的状况下是多行匹配的这个多行匹配
上面咱们能够看到当咱们匹配以什么开头的时候他只认是这个字符串开头,不会管这个字符串是否是多行,以一个字符串为总体
上面这个加了m之后他就会看看这个字符串有没有换行符,有的话,她就会以每行做为开头,去匹配。
不少标签都有本身的事件,同时咱们也能够赋予他们事件,这样就会产生顺序的问题。
拥有本身的事件叫作默认事件、咱们赋予的叫作自定义事件
默认事件先执行:checkbox标签
自定义事件先执行: a 标签submit标签
下面是一个验证checkbox标签是默认事件先执行的示列
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="checkbox"> <script src="s14django/static/jquery.min.js"></script> <script> $(':checkbox').click(function () { var v = $(this).prop('checked'); console.log(v) }) </script> </body> </html>
上面能够看出当咱们点击的时候才会出现true也就是说这个里面的默认事件,若是是自定义事件优先的话,在咱们点击它的时候开始应该先显示false而后才是true。
BootStrap是基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前段开发框架,使Web开发更加快捷。
1、响应式:
@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>
上面代码就是当咱们把浏览器的窗口调到小于 700px的时候就会使.c2生效
上面就是效果图。
2、图标、字体
@font-face
不过相对于第一个下面这两个偏向于后台,这三个是经常使用的也还有其余的一些相似的插件。
Model View Controller
数据库 模板文件 业务处理
Model Template View
数据库 模板文件 业务处理
咱们要使用Django这个框架就要先安装django
一、咱们可使用pip来安装Django
个人电脑上安装了py3和py2因此pip有2个设置了pip2和pip3
我这里使用的是python3
因此安装Django:pip3 install django
二、建立一个Django的project(我这里使用的是命令建立的使用pycharm能够直接建立,能够百度下pycharm如何建立django项目)
django-admin startproject mysite # 我这里给这个项目起名字为mysite,也能够取别的名字
建立好后会有一个项目出现,咱们进去目录结构是:
mysite
-musite
- _init_.py
-settings.py #这个是配置文件
-urls.py # url对应的关系
-wsgi.py # 遵循WSGI规范,实际用uwsig+nginx
-manage.py # 管理django程序:项目管理脚本
- python manage.py
- python manage.py startapp xx 这个是用来建立app
- python manage.py makemigrations 这个是用来
- python manage.py migrate
当咱们建立好django的项目的时候就能够启动这个项目:
启动项目:python3 manage.py runserver
启动好项目后咱们就能够经过127.0.0.1:8000来访问这个网页
由于这里默认启动的本地访问也就是127.0.0.1默认端口为8000
若是想要指定端口号就能够 :python3 manage.py runserver 8080
若是想要指定端口和ip的话:python3 manage.py runserver 192.168.0.1:8080
咱们建立好项目后有时候须要建立app这个时候咱们就要进入到这个项目里面(和manager.py同一个目录)
使用:python3 manager.py startapp app01 # 这个里面的python3表示的在doc下输入python3会进到python3的交互界面。
建立完app后在这个目录里面有一些文件,分别是:
app01
migrations 数据修改表结构(是一个文件夹)
admin Django为咱们提供的后台管理
apps 配置当前的app
models ORM,写指定类,经过命令能够建立数据库结构
tests 单元测试
views 业务代码
咱们在mysite/app01/views.py文件中,编写一个视图:代码为
from django.shortcuts import render,HttpResponse # Create your views here. def index(request): return HttpResponse('hello world')
为了使用该视图咱们须要编写一个路由系统因此咱们能够在mysite/mysite/urls.py
from django.contrib import admin from django.conf.urls import url from django.urls import path from cmdb import views urlpatterns = [ path('admin/', admin.site.urls), url(r'index/', views.index), ]
咱们运行这个项目而后到到浏览器打开127.0.0.1:8000/index就会出现上面咱们写的‘hello world’
上面只是一个简单的例子没有用到html的模板,通常模板都会放到manager.py同级目录下面的templates目录下面
同时咱们如今把项目下的setting.py里面的配置找到 'django.middleware.csrf.CsrfViewMiddleware'并把它注释掉,后面会说相关的事。
这个templates目录须要咱们本身建立。同时咱们还要建立static目录用来放置静态文件等同时咱们要在项目目录里面的settings.py文件中最后一行设置
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
这里的static目录通常放置css和js的文件。
咱们的在路由系统里面这样写
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), ]
在试图函数里面咱们编写一个视图
def login(request): # 包含用户提交的全部信息 # 获取用户提交方法 # print(request.method) error_msg = "" if request.method == "POST": # 获取用户经过POST提交过来的数据 user = request.POST.get('user', None) pwd = request.POST.get('pwd', None) if user == 'root' and pwd == "123": # 去跳转到 return redirect('/login') else: # 用户密码不配 error_msg = "用户名或密码错误" return render(request, 'login.html', {'error_msg': error_msg})
里面的login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/commons.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" name="user" type="text" /> </p> <p> <label for="password">密码:</label> <input id="password" name="pwd" type="password" /> <input type="submit" value="提交" /> <span style="color: red;">{{ error_msg }}</span> </p> </form> <script src="/static/jquery.min.js"></script> </body> </html>
上面的示列咱们能够看出当咱们须要咱们作的是定义路由规则、定义视图函数、模板渲染
咱们在建立项目的时候最外层和内层的有一个相同的名字的目录,在外层的目录与django无关只是项目的容器,能够任意命名
内层的目录是真正的项目文件包裹目录,它的名字是内部文件的包名。下面咱们说的项目名称就是指的是内部的这个目录
项目名称/url.py
url(r'^login', views.login), 这里面的login访问的就会寻找views里面的login函数
咱们定义app01/views.py里面的函数
def login(request):
request.method 判断前段是以何种方式把数据传到后台的,这里只是简单说一下 GET/POST方式
request.GET.get('',None) 获取以GET的方式提交的数据
request.POST.get('',None) 获取以POST的方式提交的数据
以何种方式返回页面的请求
return HttpResponse('字符串') 直接返回一个字符串
return render(request,'HTML模板',{key:value,key1:value1...}) 这里面后面是一个字典是把数据传输到HTML模板中进行模板渲染 ,这个能够有能够没有
return redirect('/只能填URL')
是一个特殊的模板语言。
咱们在HTML中经过{{views传过来的变量名 }}使用从views传过来的数据
def func(request):
return render(request, "index.html", {'current_user': "alex"}
index.html
<html>
..
<body>
<div>{{current_user}}</div> # 获取到上面传入的'alex',至关于<div>alex</div>
</body>
</html>
若是咱们传入的是一堆数据咱们就能够在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> # 至关于<div>alex</div>
<ul>
{% for row in user_list %} # user_list为 ['alex','eric']
{% if row == "alex" %} # 判断语句
<li>{{ row }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
上面的for循环在HTML里面必须是 开始为{% for i in user %} 结束为 {% endfor %}
判断语句在HTML的使用也是同样的咱们有多个if语句的时候:
{% if age %}
<a>有年龄</a>
{% if age > 16 %}
<a>老男人</a>
{% else %}
<a>小鲜肉</a>
{% endif %}
{% elif age%}
<a>有年龄</a>
{% else %}
<a>无年龄</a>
{% endif %}
若是咱们传入的是一个列表,字符串等咱们能够经过索引的方式取值
...
return render(request, 'index', {'current_user': "alex",
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}}})
...
<div> {{user_list.1}}</div> # 列表取值 取列表中的数据和python同样,索引也是从0开始的。这里和python使用的方式不同不是用list[]方式取得而是用list.的方式把[]换为 .
<div> {{user_dict.k1}}</div> # 字典取值
...