Python学习笔记第十八周
目录:
一、JavaScript正则表达式
1、test
2、exec
二、BootStrap
1、响应式
2、图标、字体
3、基本使用
三、Django
1、安装
2、创建目录
3、进入创建的目录中,该目录概括一个目录与一个文件
4、运行程序
5、创建APP
6、APP目录
内容:
一、JavaScript正则表达式
1、test
判断字符串是否符合规定的正则表达式
例子:
rep = /^\d+$/
rep.test('123')返回true
2、exec
获取匹配的数据,在匹配时,默认只能匹配到第一个即返回,且匹配值以数组形式存在
例子:分组匹配,会匹配两次,第一次匹配整体,第二次会将分组内容单独匹配出来
test = 'JavaScript is more fun than Java or JavaBeans!'
"JavaScript is more fun than Java or JavaBeans!"
var pattern = /\bJava\w*\b/
undefined
pattern.exec(test)
输出:["JavaScript", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"] var pattern = /\bJava(\w*)\b/
pattern.exec(test)
输出:(2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
例子2:全局匹配 在匹配模板后面加g
test = 'JavaScript is more fun than Java or JavaBeans!'
"JavaScript is more fun than Java or JavaBeans!"
var pattern = /\bJava\w*\b/g
undefined
pattern.exec(test)
["JavaScript", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
pattern.exec(test)
["Java", index: 28, input: "JavaScript is more fun than Java or JavaBeans!"]
pattern.exec(test)
["JavaBeans", index: 36, input: "JavaScript is more fun than Java or JavaBeans!"]
没有加分组的情况
var pattern = /\bJava(\w*)\b/g
undefined
test = 'JavaScript is more fun than Java or JavaBeans!'
"JavaScript is more fun than Java or JavaBeans!"
pattern.exec(test)
(2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
pattern.exec(test)
(2) ["Java", "", index: 28, input: "JavaScript is more fun than Java or JavaBeans!"]
pattern.exec(test)
(2) ["JavaBeans", "Beans", index: 36, input: "JavaScript is more fun than Java or JavaBeans!"]
有分组的情况
多行匹配:
默认就是多行匹配
m用于^或者$的情况,比如查找某个字符在两行开头或者结尾,默认情况下,尽管有\n的换行,也被默认为是一个整体,所以在此情况下用m来进行匹配
test = 'JavaScript is more fun than \nJava or JavaBeans!'
"JavaScript is more fun than
Java or JavaBeans!"
var pattern = /^Java(\w*)/g
undefined
pattern.exec(test)
(2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than ↵Java or JavaBeans!"]
pattern.exec(test)
null //没有找到Java开头的字符
没有m的情况下
test = 'JavaScript is more fun than \nJava or JavaBeans!'
"JavaScript is more fun than
Java or JavaBeans!"
var pattern = /^Java(\w*)/gm
undefined
pattern.exec(test)
(2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than ↵Java or JavaBeans!"]
pattern.exec(test)
(2) ["Java", "", index: 29, input: "JavaScript is more fun than ↵Java or JavaBeans!"]
有m的情况下
登录注册验证:
默认事件先执行:
checkbox
自定义先执行:
a:如果自定义事件,会先执行事件,如果该事件return false,就不会执行跳转操作
submit
二、BootStrap
- CSS
- JS
学习BootStrap规则
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: 900px) {
.c2{
background-color:grey;
/*当屏幕宽度小于900px时就变成红色*/
}
}
</style>
</head>
<body>
<div class="c1 c2"></div>
</body>
</html>
2、图标、字体
@font-face
3、基本使用
备注:
在修改bootstrap属性,变为自己的CSS属性时,需要在条目中加!important 这样保证在执行时自己的CSS属性优先级最高
前端写轮播图,可以访问www.bxsilder.com
三、Django
1、安装:
pip3 install django
2、创建目录:
django-admin startproject [项目名]
3、进入创建的目录中,该目录概括一个目录与一个文件:
项目名
- 与项目名一样 #对整个程序进行配置
- init.py
- settings.py #配置文件所在文件
- url #URL对应关系
- wsgi #遵循WSGI规范,线上程序一般采用uswgi + nignx
- manage.py 文件 #管理程序:
- python manage.py
- python manage.py startapp XXX
- python manage.py makemigrations
- python manage.py migrate
4、运行Django程序:
python3 manage.py runserver 0.0.0.0:8000 默认8000端口访问
例子:创建一个Django程序:
1、Pycharm中选择创建一个project,解释器选择python3.6
2、在urls中输入:
from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse def home(request):
return HttpResponse('<h1>index is here</h1>')
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', home), ]
3、运行该程序
4、通过http://127.0.0.1:8000/index访问新创建的程序
5、创建App
python manage.py startapp APP_NAME
6、app目录:
migrations 数据操作记录(修改表结构的记录)
admin Django为用户提供的后台管理
apps 配置当前app
models ORM,写指定的类,通过命令可以创建数据库结构
tests 做单元测试
views 业务逻辑代码
例子:
编写log登录界面:
urls文件:
from cmdb import views
url(r'^login', views.login),
views文件:该views文件在app名字叫cmdb中
from django.shortcuts import render #render是Django中打开文件,提取内容关闭该文件的一个快捷方式 def login(request):
# f = open('templates/login.html','r',encoding='utf-8')
# data = f.read()
# f.close()
# return HttpResponse(data)
return render(request,'login.html')
settings文件中添加cmdb这个app:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cmdb',
]
添加templates目录,在该目录下添加login.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<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" type="text"/>
</p>
<p>
<label for="password">密码:</label>
<input id="password" type="password"/>
<input type="submit" value="提交"/>
</p> </form>
</body>
</html>
添加静态文件:
创建static目录,然后在settings文件最后添加该目录
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
在settings里注释掉CSRF:CSRF就是跨站请求伪造
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
定义路由规则:
url.py文件中
例如:'login' -->函数名
请求的方法:
用户请求全部在views文件的函数的request中,其中包括:
1、request.method 可以得到用户请求的方式 GET/POST
2、request.POST.get('', None)获取post方式请求发来的数据
3、request.GET.get('', None) 获取get方式请求发来的数据
回应用户请求的三种模式:
1、return HttpResponse(‘字符串’) #通过httpresponse直接回复字符串
2、return render(request,‘HTML模板的路径’,{XXX}) #render直接读取HTML文件并将结果返回给请求用户,后面的字段代指动态的数据,可以不写
3、return redirect(‘URL’) #redirect方式只能在里面填写URL而不能写HTML模板路径,如果重定向到本地文件需要对该URL前面加 ‘/’这个/代指域名,在例子中代指0.0.0.0:8000
模板渲染:
特殊的模板语言
1、普通变量:
{{变量名}}
2、for循环
views.py中
USER_LIST = []
def home(request): if request.method == 'POST':
user = request.POST.get('username',None)
email = request.POST.get('email',None)
gender = request.POST.get('gender',None)
temp = {'username':user,'email':email, 'gender':gender}
USER_LIST.append(temp)
return render(request,'home.html',{'user_list': USER_LIST}) html中:
<tbody>
{% for row in user_list %}
<tr>
<td>{{ row.username }}</td>
<td>{{ row.email }}</td>
<td>{{ row.gender }}</td>
</tr>
{% endfor %} </tbody>
对于后端的列表和字典:
例子:
return render(request, 'index.html ',{
'current_user': 'small_a',
'user_list': ['small_a','small_b'],
'user_dict':{'k1','v1','k2': 'v2'},
})
html中:
<div>{{ current_user}}</div>
<a>{{user_list.1}}</a> #取列表中元素
<a>{{user_dict.k1}}</a> #取字典中的元素
3、if语句
{%if age %}
<a>有年龄</a>
{%if age >16 %}
<a>老男人</a>
{%endif%}
{%endif%}
Python学习笔记第十八周的更多相关文章
- Python学习笔记第二十五周(Django补充)
1.render_to_reponse() 不同于render,render_to_response()不用包含request,直接写template中文件 2.locals() 如果views文件中 ...
- Python学习笔记第十二周
目录: 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务 索引 创建数据库 外键 增删改查表 权限 python 操作mysql ORM sqla ...
- Python学习笔记第二十六周(Django补充)
一.基于jQuery的ajax实现(最底层方法:$.jax()) $.ajax( url: type:''POST“ ) $.get(url,[data],[callback],[type]) #c ...
- Python学习笔记第十九周
目录: 一.路由系统URL 1.Django请求生命周期 2.创建Django project 3.配置 4.编写程序 二.视图 三.模板 四.ORM操作 内容: 一.URL 1.Django请求生命 ...
- Python学习笔记第十六周
目录: 一.CSS补充 1.页面布局 二.JavaScript补充 1.条件判断 2.函数分类 3.序列化 4.转义 5.eval 6.时间 7.作用域 三.DOM 1.间接查找 文本操作 样式操作 ...
- Python学习笔记第十五周
目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...
- python学习笔记(十八)网络编程之requests模块
上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出 ...
- python学习笔记(十八)python操作excel
python操作excel需要安装通过pip安装xlwt, xlrd这两个模块: pip install xlwt pip insall xlrd 操作excel ,写入excel: import x ...
- Python学习笔记第二十二周(前端知识点补充)
目录: 一.伪类 二.样式 1.字体 2.背景图片 3.margin和padding 4.列表属性 5.float 6.clear 7.position 8.text-decoration(a标签下划 ...
随机推荐
- iBeacon室内定位原理解析【转】
目前,技术发展持续火热,因着iBeacon的定位精度和造价都比较符合国内室内定位的市场需求,下面我们来聊一聊iBeacon室内定位原理. iBeacon定位原理 iBeacon是一项低耗能蓝牙技术,工 ...
- C++类型检查
与大多数语言一样,C++也是类型决定了能对该对象进行的操作,一条表达式是否合法依赖于其中参与运算的对象的类型,C++是一种静态数据类型语言,它的类型检查发生在编译时, 因此编译器知道程序中每一个变量对 ...
- linux下详解shell中>/dev/null 2>&1
前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...
- linux下find命令详解
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- centos 安装 composer
1 安装 composer curl -sS https://getcomposer.org/installer | php 2 添加到环境变量 mv co ...
- C++解析三
类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行.构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置初始 ...
- Vue + Element UI 实现权限管理系统(第三方图标库)
使用第三方图标库 用过Elment的同鞋都知道,Element UI提供的字体图符少之又少,实在是不够用啊,幸好现在有不少丰富的第三方图标库可用,引入也不会很麻烦. Font Awesome Font ...
- xadmin后台分段导出避免timeout
一.问题 xadmin后台功能很强大,特别在导出的时候格式有xls/xlsx.csv.xml.json.实际常用的还是前面2种.xls格式使用的xlwt,有个缺陷,导出数据过大时,会报ValueErr ...
- ural1517
题解: 后缀数组 求一下最长公共字串 代码: #include<cstdio> #include<cmath> #include<algorithm> #inclu ...
- java③
1.变量是什么? 变量====>一个数据在内存中 存储空间的表示! 在程序运行期间可以发生变化! *变量名 可以 迅速的从内存中 查询出 指定的变量! 2.数据类型: 数据类型 一共分为两种: ...