加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

day_18 正则及Django

发布时间:2020-12-14 00:44:34 所属栏目:百科 来源:网络整理
导读:一、 正则表达式 1、定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容) varpattern=/^Java

一、正则表达式

1、定义正则表达式

  • /.../ 用于定义正则表达式

  • /.../g 表示全局匹配

  • /.../i 表示不区分大小写

  • /.../m 表示多行匹配
    JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)

varpattern=/^Javaw*/gm;
vartext="JavaScriptismorefunthannJavaEEorJavaBeans!";
result=pattern.exec(text)
result=pattern.exec(text)
result=pattern.exec(text)

注:定义正则表达式也可以reg= new RegExp()

2、匹配

JavaScript中支持正则表达式,其主要提供了两个功能:

  • test(string) 检查字符串中是否和正则匹配

rep=/d+/;
rep.test("asdfoiklfasdf89asdfasdf")#true
rep=/^d+$/;
rep.test("123456789")#true

# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

  • exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

非全局模式
获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
varpattern=/bJavaw*b/;
vartext="JavaScriptismorefunthanJavaorJavaBeans!";
result=pattern.exec(text)

varpattern=/b(Java)w*b/;
vartext="JavaScriptismorefunthanJavaorJavaBeans!";
result=pattern.exec(text)

全局模式
需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
varpattern=/bJavaw*b/g;
vartext="JavaScriptismorefunthanJavaorJavaBeans!";
result=pattern.exec(text)

varpattern=/b(Java)w*b/g;
vartext="JavaScriptismorefunthanJavaorJavaBeans!";
result=pattern.exec(text)

字符串中相关方法

obj.search(regexp)获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
obj.match(regexp)获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
obj.replace(regexp,replacement)替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$$:直接量$符号

二、登录注册验证

默认事件先执行:
checkbox
自定义先执行
a
submit
...
<form>

<inputtype='type'/>
<inputtype='password'/>
<inputtype='submit'/>

</form>

$(':submit').click(function(){

$(':text,:password').each(function(){
...returnfalse;
})returnfalse;
})

input,checbox

==================================验证================================
JS:验证

各种验证

$(':submit').click(function(){

$(':text,:password').each(function(){
...returnfalse;
})returnfalse;
})

三、组件

1.BootStrap

下载:http://www.bootcss.com/

学习 BootStrap 规则
  一、响应式
    @media

例:响应式布局

<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
<style>
.c1{
background-color:red;
height:50px;
}
@media(min-width:700px){
.c2{
background-color:grey;
}
}
</style>
</head>
<body>
<divclass="c1c2"></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/ 下载引用

<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
<linkrel="stylesheet"href="jquery.bxslider/jquery.bxslider.css">
</head>
<body>
<ulclass="bxslider">
<li><imgsrc="image/1.png"style="width:500px;height:200px;"/></li>
<li><imgsrc="image/1.png"style="width:500px"/></li>
<li><imgsrc="image/1.png"style="width:500px"/></li>
</ul>

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

四、web框架

MVC

Model View Controller
数据库 模板文件 业务处理

MTV

Model Template View
数据库 模板文件 业务处理

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

Web框架本质

众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

#!/usr/bin/envpython#coding:utf-8
importsocket
defhandle_request(client):
buf=client.recv(1024)
client.send("HTTP/1.1200OKrnrn")
client.send("Hello,Seven")
defmain():
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('localhost',8000))
sock.listen(5)
whileTrue:
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/envpython#coding:utf-8
fromwsgiref.simple_serverimportmake_server
defRunServer(environ,start_response):
start_response('200OK',[('Content-Type','text/html')])return['<h1>Hello,web!</h1>'.encode('utf-8'),]
if__name__=='__main__':
httpd=make_server('',8000,RunServer)print"ServingHTTPonport8000..."
httpd.serve_forever()

五、Django

1.安装

pip3installdjango

2.创建Django工程

django-adminstartproject【工程名称】

例如:工程名称为mysite;那么mysite目录下会产生如下目录及文件。

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,}

3.运行Django功能

语法:python manage.py runserver ip:port

pythonmanage.pyrunserver127.0.0.1:8001

4.创建APP

pythonmanage.pystartappcmdb

- migrations 数据修改表结构

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

- apps 配置当前app

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

- tests 单元测试

- views 业务代码

示例:表单验证



内容整理

1.创建Django工程
django-adminstartproject工程名

2.创建APP
cd工程名
pythonmanage.pystartappcmdb

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
deffunc(request):#request.methodGET/POST

#http://127.0.0.1:8009/home?nid=123&name=alex
#request.GET.get('',None)#获取请求发来的而数据

#request.POST.get('',None)


#returnHttpResponse("字符串")
#returnrender(request,"HTML模板的路径")
#returnredirect('/只能填URL')

8、模板渲染
特殊的模板语言

--{{变量名}}
deffunc(request):returnrender(request,"index.html",{'current_user':"alex"})


index.html

<html>
..
<body>
<div>{{current_user}}</div>
</body>

</html>

====>最后生成的字符串

<html>
..
<body>
<div>alex</div>
</body>

</html>
--For循环deffunc(request):returnrender(request,{'current_user':"alex",'user_list':['alex','eric']})


index.html

<html>
..
<body>
<div>{{current_user}}</div>

<ul>
{%forrowinuser_list%}

{%ifrow=="alex"%}
<li>{{row}}</li>
{%endif%}

{%endfor%}
</ul>

</body>

</html>
#####索引#################
deffunc(request):returnrender(request,'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>
######条件

deffunc(request):returnrender(request,"age":18,'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>

{%ifage%}
<a>有年龄</a>
{%ifage>16%}
<a>老男人</a>
{%else%}
<a>小鲜肉</a>
{%endif%}
{%else%}
<a>无年龄</a>
{%endif%}
</body>

</html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读