Python 学习第十八天 js 正则及其它前端知识
一,js 正则表达式
test 判断制度串是否符合规定的正则
(1)定义正则表达式匹配规则
js 中定义正则表达式为rep=/\d+/,两个//之间为正则模式
(2)rep.test("assdsda89sdasdas") ,返回true,一般test 方法为只要字符串中的包含正则模式即返回true
(3)rep=/^\d+$/完全匹配正则模式
exec 获取匹配的数据
1, (1)rep=/\d+/;
(2)str="wangshen_67_houyanfa_20"
(3)rep.exec(str) 返回["67"]
2, js exec 分组匹配
text="JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava(\w*)\b/; pattern.exec(text) #返回 ["JavaScript", "Script"]
3,js exec 全局匹配
text="JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava\w*\b/g; pattern.exec(text) # ["JavaScript"] pattern.exec(text) # ["Java"] pattern.exec(text) # ["JavaBeans"] pattern.exec(text) # null pattern.exec(text) #加g表示全局匹配,匹配一个输出一个,当全部匹配完成时输出null 再匹配从头开始
4,js exec 全局加分组匹配
JavaScript is more fun than Java or JavaBeans! var pattern = /\bJava(\w*)\b/g; # ["JavaScript",'Script'] # ["Java", ""] # ["JavaBeans", "Beans"] # null #分组匹配会对匹配到的结果再进行一次匹配
5,其它匹配模式
(1)/.../i 不区分大小写
(2)/.../m 表示多行匹配,js 中默认支持多行匹配,也就是单独加g也可以完成多行匹配,但是在匹配模式中^$,匹配多行时需要m参数
例如
text="JavaScript is more fun than \n Java or JavaBeans!" var pattern = /\bJava(\w*)\b/g; pattern.exec(text) #返回["JavaScript",'Script'] 也可以匹配成功,表示默认支持多行 text="JavaScript is more fun than \n Java or JavaBeans!" var pattern = /^Java(\w*)/g; #匹配以Java开头的字符串,且后面为任意字符 pattern.exec(text) #返回["JavaScript",'Script'] pattern.exec(text) #返回null var pattern = /^Java(\w*)/gm; pattern.exec(text) #返回["JavaScript",'Script'] pattern.exec(text) #返回["Java",""]
6,a标签绑定事件
<a onclick='return Func();'>asdf</a> function Func(){ return false: #利用DOM绑定方式增加a标签事件 } <a>asdf</a> $('a').click(function(){return false;}) #利用jquery方式绑定事件
7,form 表单提交事件
<form> <input type='text' /> <input type='password' /> <input type='submit' /> </form> $(':submit').click(function(){ $(':text,:password').each(function(){ ... return false; }) return false; })
8,标签定义事件执行顺序
像a input submit 标签一般默认都为自定义事件先执行,checkbox 默认事件先执行
9,css设置重要性
<style> .no-radus{ border-radius:0 !important; } </style>
二,django
1,django 设置静态文件路径
在setting.py中最下面添加添加以下代码
STATIC_URL = '/static/'
STATICFILES_DIRS = { os.path.join(BASE_DIR,'static'), }
2,创建完django project 后的操作
(1),配置模板的路径
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
(2),配置静态文件的路径
#在 setting.py 中添加 STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) #在html中添加 <link rel="stylesheet" href="/static/commons.css" />
3,view.py获取用户提交的数据
if request.method == "post": user = request.POST.get(‘user',None) pwd = request.POST.get('pwd',None) #获取用户提交的数据中 即使不存在相应的值也不会报错 user = request.POST['user'] pwd = request.POST['pwd'] #获取用户提交的数据。如果不存在就会报错
4,view.py中函数处理重定向到其它网址
from django.shortcuts import redirect #导入模块 return redirect('http://www.baidu.com') #在view函数中添加,重定向到其它网站
from django.shortcuts import render
return render(request,'login.html') #找到本地的模板,打开html文件
5,render 返回错误信息
return render(request,'login.html',{'error_msg':error_msg})
6,django 处理html模板for 循环与取某一个值
{% for row in user_list %} <tr> <td>{{ row.username }}</td> <td>{{ row.gender }}</td> <td>{{ row.email}}</td> </tr> { %endfor %} #部分html代码 def home(request): return render(request,'home.html',{'user_list': USER_LIST}} #部分views.py代码
7,css input 框中提示字设置
<input type="text" name="username" placeholder="用户名" />
8,django 已get方式获取值,需要在url中增加值
例如:
http://127.0.0.1:8009/home?nid=123&name=jack #get方式请求 #views函数中 print(request.GET) #返回 <QueryDict:{'name':[alex],'nid':['123']}> print(request.GET.get('nid')) #返回 123