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

本节内容

  • JavaScript 正则表达式
  • Django初识

正则表达式

1、定义正则表达式

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

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

1 var pattern = /^Java\w*/gm;
2 var text = "JavaScript is more fun than \nJavaEE 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)     检查字符串中是否和正则匹配

n = 'uui99sdf'
reg = /\d+/
reg.test(n)  ---> true# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

View Code

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

 1 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。2  3 非全局模式4     获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)5     var pattern = /\bJava\w*\b/;6     var text = "JavaScript is more fun than Java or JavaBeans!";7     result = pattern.exec(text)8  9     var pattern = /\b(Java)\w*\b/;
10     var text = "JavaScript is more fun than Java or JavaBeans!";
11     result = pattern.exec(text)
12
13 全局模式
14     需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
15     var pattern = /\bJava\w*\b/g;
16     var text = "JavaScript is more fun than Java or JavaBeans!";
17     result = pattern.exec(text)
18
19     var pattern = /\b(Java)\w*\b/g;
20     var text = "JavaScript is more fun than Java or JavaBeans!";
21     result = pattern.exec(text)

View Code

3、字符串中相关方法

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

二、程序目录

三、配置文件

1、数据库

 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

1 # 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
2
3 # 如下设置放置的与project同名的配置的 __init__.py文件中
4
5 import pymysql
6 pymysql.install_as_MySQLdb() 

View Code

2、模版

TEMPLATE_DIRS = (os.path.join(BASE_DIR,'templates'),)

View Code

3、静态文件

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

View Code

路由系统

1、单一路由对应

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

2、基于正则的路由

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、为路由映射设置名称

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 中获取的数据插入到模版中,最后将信息返回给用户。

def current_datetime(request):now = datetime.datetime.now()html = "<html><body>It is now %s.</body></html>" % nowreturn HttpResponse(html)

View Code

from django import template
t = template.Template('My name is {{ name }}.')
c = template.Context({'name': 'Adrian'})
print t.render(c)

View Code

import datetime
from django import template
import DjangoDemo.settingsnow = 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

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetimedef current_datetime(request):now = datetime.datetime.now()t = get_template('current_datetime.html')html = t.render(Context({'current_date': now}))return HttpResponse(html)

View Code

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

#!/usr/bin/env python
#coding:utf-8
from django import template
from django.utils.safestring import mark_saferegister = template.Library()@register.simple_tag
def my_simple_time(v1,v2,v3):return  v1 + v2 + v3@register.simple_tag
def my_input(id,arg):result = "<input type='text' id='%s' class='%s' />" %(id,arg,)return mark_safe(result)

View Code

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

{% load xx %}

d、使用simple_tag

{% my_simple_time 1 2 3%}
{% my_input 'id_username' 'hide'%}

View Code

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

INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01',
)

View Code

转载于:https://www.cnblogs.com/honey01/p/7201657.html

python自动华 (十八)相关推荐

  1. python自动华 (十四)

    Python自动化 [第十四篇]:HTML介绍 本节内容: Html 概述 HTML文档 常用标签 2. CSS 概述 CSS选择器 CSS常用属性 1.HTML 1.1概述 HTML是英文Hyper ...

  2. [Python图像处理] 三十八.OpenCV图像增强和图像去雾万字详解(直方图均衡化、局部直方图均衡化、自动色彩均衡化)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  3. python自动华 (七)

    Python自动化 [第七篇]:Python基础-面向对象高级语法.异常处理.Scoket开发基础 本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   ...

  4. python圣斗士修炼(十八):访问mysql数据库

    安装驱动 windows: 首先要确定自己已经安装pip 1. 查看是否安装: C:\Users\Administrator>pip -V pip 9.0.1 from d:\python27\ ...

  5. python自动华 (四)

    Python自动化 [第四篇]:Python基础-装饰器 生成器 迭代器 Json & pickle 目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结 ...

  6. [Python图像识别] 四十八.Pytorch构建Faster-RCNN模型实现小麦目标检测

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  7. [Python人工智能] 二十八.Keras深度学习中文文本分类万字总结(CNN、TextCNN、LSTM、BiLSTM、BiLSTM+Attention)

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了BiLSTM-CRF模型搭建及训练.预测,最终实现医学命名实体识别实验.这篇文章将详细讲解Keras实现经典 ...

  8. [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. 【Python教程】十八、这根本就不是我的错嘛~Python的异常处理

    更多教程请私信~ 来源:思路实验室 作者:室长 大家好,欢迎收看思路实验室出品的Python入门教程,我是室长. 报错是编程永远不能回避的话题.毕竟电脑没有人脑那么灵活,跟它对话得一个标点符号都不带错 ...

最新文章

  1. .NET Garbage-Collectors
  2. Java中的增强for循环的实现原理与坑
  3. “学在清华”清华大学本科教育主题展在校史馆开展
  4. 企业级应用能帮助闪存走出产能过剩时代吗?
  5. Verilog_Day2
  6. 网站如何从http升级成https
  7. 大数据之Hive教程
  8. 罗格斯大学电子与计算机系排名,罗格斯大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
  9. OpenCV读取视频并获得相关属性信息
  10. Web Server 配置及上传文件
  11. CTF常见的php函数
  12. 微信小程序实现海报功能经历
  13. R语言:基本变量及其之间关系探索分析
  14. 腾讯数据库TcaplusDB X 黎明觉醒,热血不散,探索不止!
  15. 1071svm函数 r语言,科学网—R中的svm - 吴锐的博文
  16. 冰羚-README.md翻译
  17. 鸿蒙os正式版推送时间,鸿蒙OS正式版推送时间确定,游戏性能更强,流畅度稳定性均提升...
  18. 读书有益——》小朋友的诗(六)
  19. java选择结构与分支结构
  20. CY3/Cy5/cy7/FITC/PEG/DBCO/BSA/PEI标记修饰纳米金球和纳米金棒的功能化修饰(Gold Nanoparticles)

热门文章

  1. laravel5.5 The page has expired due to inactivity. Please refresh and try again.
  2. 【LRD,DLR】BST的后续遍历序列,二叉树中和为某一值的路径
  3. 三姬分金/四姬分金/五姬分金(海盗分金币)等经典博弈论问题
  4. 微信怎么识别图片文字
  5. 高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题
  6. NotebookApp] 302 GET /?token=be0e8107dd84eab831a957b640602e5157b5336b15e7fa61 (127.0.0.1) 1.000000ms
  7. Hadoop环境配置(6)-MySQL安装
  8. java的初始化和赋值的区别_Java的赋值与初始化
  9. 西瓜视频官方缩短域名网址接口v.ixigua.com生成原理解析
  10. 博通wifi驱动详解