Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

摘要:
23非全局模式4获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配5varpattern=/Javaw*/;6vartext="JavaScriptismorefunthanJavaorJavaBeans!";11result=pattern.exec1213全局模式14需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕15varpattern=/Javaw*/g;16vartext="JavaScriptismorefunthanJavaorJavaBeans!

本节内容

  • JavaScript 正则表达式
  • Django初识

正则表达式

1、定义正则表达式

  • /.../ 用于定义正则表达式
  • /.../g 表示全局匹配
  • /.../i 表示不区分大小写
  • /.../m 表示多行匹配

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

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第1张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第2张
1 var pattern = /^Javaw*/gm;
2 var text = "JavaScript is more fun than 
JavaEE or JavaBeans!";
3 result = pattern.exec(text)
4 result = pattern.exec(text)
5 result = pattern.exec(text)
View Code

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

2、匹配

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

  • test(string) 检查字符串中是否和正则匹配
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第3张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第4张
n = 'uui99sdf'reg = /d+/reg.test(n)  --->true
 
#只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$
View Code
  • exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第5张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第6张
1 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
2  
3 非全局模式
4 获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
5     var pattern = /Javaw*/;
6     var text = "JavaScript is more fun than Java or JavaBeans!";
7     result = pattern.exec(text)
8  
9     var pattern = /(Java)w*/;
10     var text = "JavaScript is more fun than Java or JavaBeans!";
11     result = pattern.exec(text)
12  
13 全局模式
14 需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
15     var pattern = /Javaw*/g;
16     var text = "JavaScript is more fun than Java or JavaBeans!";
17     result = pattern.exec(text)
18  
19     var pattern = /(Java)w*/g;
20     var text = "JavaScript is more fun than Java or JavaBeans!";
21     result = pattern.exec(text)
View Code

3、字符串中相关方法

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第7张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第8张
1 obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
2 obj.match(regexp)                    获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
3 obj.replace(regexp, replacement)     替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
4 $数字:匹配的第n个组内容;
5                                           $&:当前匹配的内容;
6 $`:位于匹配子串左侧的文本;
7                                           $':位于匹配子串右侧的文本
8                                           $$:直接量$符号
View Code

Django初识

基本配置

一、创建django程序

    • 终端命令:django-admin startproject sitename
    • IDE创建Django程序时,本质上都是自动执行上述命令

其他常用命令:

python manage.py runserver 0.0.0.0
python manage.py startapp appname
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate

python manage.py createsuperuser

二、程序目录

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第9张

三、配置文件

1、数据库

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第10张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第11张
1 DATABASES ={
2     'default': {
3     'ENGINE': 'django.db.backends.mysql',
4     'NAME':'dbname',
5     'USER': 'root',
6     'PASSWORD': 'xxx',
7     'HOST': '',
8     'PORT': '',
9 }
10 }
View Code
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第12张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第13张
1 #由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
2   
3 #如下设置放置的与project同名的配置的 __init__.py文件中
4   
5 importpymysql
6 pymysql.install_as_MySQLdb() 
View Code

2、模版

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第14张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第15张
TEMPLATE_DIRS =(
        os.path.join(BASE_DIR,'templates'),
    )
View Code

3、静态文件

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第16张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第17张
STATICFILES_DIRS =(
        os.path.join(BASE_DIR,'static'),
    )
View Code

路由系统

1、单一路由对应

url(r'^index$', views.index),

2、基于正则的路由

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第18张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第19张
url(r'^index/(d*)', views.index),
url(r'^manage/(?P<name>w*)/(?P<id>d*)', views.manage),
View Code

3、添加额外的参数

url(r'^manage/(?P<name>w*)', views.manage,{'id':333}),

4、为路由映射设置名称

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第20张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第21张
url(r'^home', views.home, name='h1'),
url(r'^index/(d*)', views.index, name='h2'),
View Code

设置名称之后,可以在不同的地方调用,如:

    • 模板中使用生成URL {% url 'h2' 2012 %}
    • 函数中使用生成URL reverse('h2', args=(2012,)) 路径:django.urls.reverse
    • Model中使用获取URL 自定义get_absolute_url() 方法

5、根据app对路由规则进行分类

url(r'^web/',include('web.urls')),

django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。

通过反射机制,为django开发一套动态的路由系统Demo:点击下载

模板

1、模版的执行

模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第22张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第23张
defcurrent_datetime(request):
    now =datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" %now
    return HttpResponse(html)
View Code
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第24张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第25张
from django importtemplate
t = template.Template('My name is {{ name }}.')
c = template.Context({'name': 'Adrian'})
print t.render(c)
View Code
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第26张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第27张
importdatetime
from django importtemplate
importDjangoDemo.settings
 
now =datetime.datetime.now()
fp = open(settings.BASE_DIR+'/templates/Home/Index.html')
t =template.Template(fp.read())
fp.close()
html = t.render(template.Context({'current_date': now}))
return HttpResponse(html
View Code
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第28张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第29张
from django.template.loader importget_template
from django.template importContext
from django.http importHttpResponse
importdatetime
 
defcurrent_datetime(request):
    now =datetime.datetime.now()
    t = get_template('current_datetime.html')
    html = t.render(Context({'current_date': now}))
    return HttpResponse(html)
View Code
Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第30张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第31张
return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))
View Code

2、模版语言

模板中也有自己的语言,该语言可以实现数据展示

    • {{ item }}
    • {% for item in item_list %} <a>{{ item }}</a> {% endfor %}
      forloop.counter
      forloop.first
      forloop.last
    • {% if ordered_warranty %} {% else %} {% endif %}
    • 母板:{% block title %}{% endblock %}
      子板:{% extends "base.html" %}
      {% block title %}{% endblock %}
    • 帮助方法:
      {{ item.event_start|date:"Y-m-d H:i:s"}}
      {{ bio|truncatewords:"30" }}
      {{ my_list|first|upper }}
      {{ name|lower }}

3、自定义simple_tag

a、在app中创建templatetags模块

b、创建任意 .py 文件,如:xx.py

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第32张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第33张
#!/usr/bin/env python#coding:utf-8
from django importtemplate
from django.utils.safestring importmark_safe
   
register =template.Library()
   
@register.simple_tag
defmy_simple_time(v1,v2,v3):
    return  v1 + v2 +v3
   
@register.simple_tag
defmy_input(id,arg):
    result = "<input type='text'     />" %(id,arg,)
    return mark_safe(result)
View Code

c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名

{% load xx %}

d、使用simple_tag

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第34张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第35张
{% my_simple_time 1 2 3%}
{% my_input 'id_username' 'hide'%}
View Code

e、在settings中配置当前app,不然django无法找到自定义的simple_tag  

Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第36张Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识第37张
INSTALLED_APPS =(
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
)
View Code

免责声明:文章转载自《Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Entity Framework中使用存储过程(一):实现存储过程的自动映射分类任务评价——混淆矩阵、精度、召回率的具体解释下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python实现快捷输入(类似WeGame的一键喊话)

故事背景:   表弟跟我说,他玩游戏玩的不是很好,导致经常被队友互动,但是自己的手速有限,经常在互动中败阵。   因此,尝试做一款小工具,帮助表弟取得和队友互动的胜利! 逻辑设计:   监听键盘上的某个按键   当该按键被按下时,调用数据库(或者远程接口)的数据   将获取到的数据写进Windows的剪贴板   模拟粘贴快捷键(Ctrl + V),将数据文...

第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍

一、概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架部件的所有类的基类,如菜单、进度条、Label标签等。QFrame类除了派生子类外,也可以直接用于创建没有任何内容的简单占位符框架,用于占用一部分空间。...

ansible使用jinja2模板

jinja2基本语法 控制结构 {% %}             jinja2中的for循环用于迭代Python的数据类型,包括列表,元组和字典          2.变量取值 {{ }}             jinja2模板中使用 {{ }} 语法表示一个变量,它是一种特殊的占位符。当利用jinja2进行渲染的时候,它会把这些特殊的占位符进行填充/...

python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列

1、计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数。 ps:具备字典的所有功能 + 自己的功能  Counter 我们从中挑选一些相对常用的方法来举例: 在上面的例子我们可以看出,counter方法返回的是一个字典,它将字符串中出现的所有字符都进行了统计。在这里再介绍一下update方法,这个update方法是将两次...

Python Django CMDB项目实战之-1如何开启一个Django-并设置base页、index页、文章页面

1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包)、PIL/pillow(处理图片的包) 安装命令: pip install django==1.8.2 pip install pillow 2、学习django需要的知识点: python基础 mysql基本查询 Html css...

macOS Sierra 10.12.6 odoo 10.0 开发环境配置

参考了网上的一些教程,将最终过程记录一下,其中需要的一些程序,我已经放到百度网盘: https://pan.baidu.com/s/1boKHSTL  1、抹盘安装macOS Sierra 10.12.6: 制作macOS安装启动盘参见:http://www.iplaysoft.com/macos-usb-install-drive.html 2、安装ma...