目录:

  一、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

    获取匹配的数据,在匹配时,默认只能匹配到第一个即返回,且匹配值以数组形式存在

    例子:分组匹配,会匹配两次,第一次匹配整体,第二次会将分组内容单独匹配出来

  1. test = 'JavaScript is more fun than Java or JavaBeans!'
  2. "JavaScript is more fun than Java or JavaBeans!"
  3. var pattern = /\bJava\w*\b/
  4. undefined
  5. pattern.exec(test)
  6. 输出:["JavaScript", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
  7.  
  8. var pattern = /\bJava(\w*)\b/
  9. pattern.exec(test)
  10. 输出:(2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]

  例子2:全局匹配 在匹配模板后面加g

  

  1. test = 'JavaScript is more fun than Java or JavaBeans!'
  2. "JavaScript is more fun than Java or JavaBeans!"
  3. var pattern = /\bJava\w*\b/g
  4. undefined
  5. pattern.exec(test)
  6. ["JavaScript", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
  7. pattern.exec(test)
  8. ["Java", index: 28, input: "JavaScript is more fun than Java or JavaBeans!"]
  9. pattern.exec(test)
  10. ["JavaBeans", index: 36, input: "JavaScript is more fun than Java or JavaBeans!"]

没有加分组的情况

  1. var pattern = /\bJava(\w*)\b/g
  2. undefined
  3. test = 'JavaScript is more fun than Java or JavaBeans!'
  4. "JavaScript is more fun than Java or JavaBeans!"
  5. pattern.exec(test)
  6. (2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than Java or JavaBeans!"]
  7. pattern.exec(test)
  8. (2) ["Java", "", index: 28, input: "JavaScript is more fun than Java or JavaBeans!"]
  9. pattern.exec(test)
  10. (2) ["JavaBeans", "Beans", index: 36, input: "JavaScript is more fun than Java or JavaBeans!"]

有分组的情况

    多行匹配:

    默认就是多行匹配

    m用于^或者$的情况,比如查找某个字符在两行开头或者结尾,默认情况下,尽管有\n的换行,也被默认为是一个整体,所以在此情况下用m来进行匹配

  1. test = 'JavaScript is more fun than \nJava or JavaBeans!'
  2. "JavaScript is more fun than
  3. Java or JavaBeans!"
  4. var pattern = /^Java(\w*)/g
  5. undefined
  6. pattern.exec(test)
  7. (2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than ↵Java or JavaBeans!"]
  8. pattern.exec(test)
  9. null //没有找到Java开头的字符

没有m的情况下

  1. test = 'JavaScript is more fun than \nJava or JavaBeans!'
  2. "JavaScript is more fun than
  3. Java or JavaBeans!"
  4. var pattern = /^Java(\w*)/gm
  5. undefined
  6. pattern.exec(test)
  7. (2) ["JavaScript", "Script", index: 0, input: "JavaScript is more fun than ↵Java or JavaBeans!"]
  8. pattern.exec(test)
  9. (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:

    例子:缩放时变换颜色

    

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .c1{
  8. background-color:red;
  9. height:50px;
  10. }
  11. @media (min-width: 900px) {
  12. .c2{
  13. background-color:grey;
  14. /*当屏幕宽度小于900px时就变成红色*/
  15. }
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div class="c1 c2"></div>
  21. </body>
  22. </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中输入:

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from django.shortcuts import HttpResponse
  4.  
  5. def home(request):
  6. return HttpResponse('<h1>index is here</h1>')
  7. urlpatterns = [
  8. url(r'^admin/', admin.site.urls),
  9. url(r'^index/', home),
  10.  
  11. ]

    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文件:

  1.  from cmdb import views
  2.  url(r'^login', views.login),

    views文件:该views文件在app名字叫cmdb中

  1. from django.shortcuts import render #render是Django中打开文件,提取内容关闭该文件的一个快捷方式
  2.  
  3. def login(request):
  4. # f = open('templates/login.html','r',encoding='utf-8')
  5. # data = f.read()
  6. # f.close()
  7. # return HttpResponse(data)
  8. return render(request,'login.html')

    settings文件中添加cmdb这个app:

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'cmdb',
  9. ]

    添加templates目录,在该目录下添加login.html文件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Login</title>
  6. <style>
  7. label{
  8. width:80px;
  9. text-align: right;
  10. display: inline-block;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <form action="/login" method="POST">
  16. <p>
  17. <label for="username">用户名:</label>
  18. <input id="username" type="text"/>
  19. </p>
  20. <p>
  21. <label for="password">密码:</label>
  22. <input id="password" type="password"/>
  23. <input type="submit" value="提交"/>
  24. </p>
  25.  
  26. </form>
  27. </body>
  28. </html>

    添加静态文件:

    创建static目录,然后在settings文件最后添加该目录

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

    在settings里注释掉CSRF:CSRF就是跨站请求伪造

  1. MIDDLEWARE = [
  2. 'django.middleware.security.SecurityMiddleware',
  3. 'django.contrib.sessions.middleware.SessionMiddleware',
  4. 'django.middleware.common.CommonMiddleware',
  5. #'django.middleware.csrf.CsrfViewMiddleware',
  6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  7. 'django.contrib.messages.middleware.MessageMiddleware',
  8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  9. ]

    

    定义路由规则:

    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循环

    

  1. views.py
  2. USER_LIST = []
  3. def home(request):
  4.  
  5. if request.method == 'POST':
  6. user = request.POST.get('username',None)
  7. email = request.POST.get('email',None)
  8. gender = request.POST.get('gender',None)
  9. temp = {'username':user,'email':email, 'gender':gender}
  10. USER_LIST.append(temp)
  11. return render(request,'home.html',{'user_list': USER_LIST})
  12.  
  13. html中:
  14. <tbody>
  15. {% for row in user_list %}
  16. <tr>
  17. <td>{{ row.username }}</td>
  18. <td>{{ row.email }}</td>
  19. <td>{{ row.gender }}</td>
  20. </tr>
  21. {% endfor %}
  22.  
  23. </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%}

  1.     

  

 

Python学习笔记第十八周的更多相关文章

  1. Python学习笔记第二十五周(Django补充)

    1.render_to_reponse() 不同于render,render_to_response()不用包含request,直接写template中文件 2.locals() 如果views文件中 ...

  2. Python学习笔记第十二周

    目录: 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务 索引 创建数据库 外键 增删改查表 权限 python 操作mysql  ORM sqla ...

  3. Python学习笔记第二十六周(Django补充)

    一.基于jQuery的ajax实现(最底层方法:$.jax()) $.ajax( url: type:''POST“ ) $.get(url,[data],[callback],[type])  #c ...

  4. Python学习笔记第十九周

    目录: 一.路由系统URL 1.Django请求生命周期 2.创建Django project 3.配置 4.编写程序 二.视图 三.模板 四.ORM操作 内容: 一.URL 1.Django请求生命 ...

  5. Python学习笔记第十六周

    目录: 一.CSS补充 1.页面布局 二.JavaScript补充 1.条件判断 2.函数分类 3.序列化 4.转义 5.eval 6.时间 7.作用域 三.DOM 1.间接查找 文本操作 样式操作 ...

  6. Python学习笔记第十五周

    目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...

  7. python学习笔记(十八)网络编程之requests模块

    上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出 ...

  8. python学习笔记(十八)python操作excel

    python操作excel需要安装通过pip安装xlwt, xlrd这两个模块: pip install xlwt pip insall xlrd 操作excel ,写入excel: import x ...

  9. Python学习笔记第二十二周(前端知识点补充)

    目录: 一.伪类 二.样式 1.字体 2.背景图片 3.margin和padding 4.列表属性 5.float 6.clear 7.position 8.text-decoration(a标签下划 ...

随机推荐

  1. SQL 查询语句

    4.2 单表查询 4.2.1 列名(表名)的别名(as 可以不加) 给列名取别名既可以加 as 也可以不加. (2008 - Sage.lower(Sdept)等可计算但无列名,需要指定列名) 原列名 ...

  2. 十一、持久层框架(MyBatis)

    一.基于注解方式的CRUD 把xml方式的CRUD修改为注解方式 之前在xml中配置,是在<mapper></mapper>标签下写CRUD <mapper namesp ...

  3. iOS 面试总结

    APP崩溃 启动秒退 在新 iOS 上正常的应用,到了老版本 iOS 上秒退最常见原因是系统动态链接库或Framework无法找到.这种情况通常是由于 App 引用了一个新版操作系统里的动态库(或者某 ...

  4. Spring循环依赖

    Spring-bean的循环依赖以及解决方式 Spring里面Bean的生命周期和循环依赖问题 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环. ...

  5. Qt动态布局

    QVBoxLayout *m_pvLayout = NULL: QWidget *m_pWidgetPlay = NULL: m_pvLayout = new QVBoxLayout(this); m ...

  6. 蓝桥杯—BASIC-19 完美的代价(贪心)

    问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的. 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义 ...

  7. Debug method

    #define DEBUG(format,...) printf("Ray.he file:"__FILE__" func:%s() line:%d, print &qu ...

  8. win10与centos7的双系统U盘安装(二:安装以及配置centos系统)

    继续第一篇的讲解,接着就是要进入第二部分——安装以及配置centos系统 特别提醒在安装centos之间,注意自己的win10系统进行备份,便于回复安装失败后的系统 1:安装前准备 安装前准备主要是两 ...

  9. UVA 11464 - Even Parity 状态压缩,分析 难度: 2

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  10. windows下的pycharm配置 linux环境

    由于最近学习python的需要,为了方便程序的调试,尝试在Windows下的Pycharm远程连接到虚拟机中Centos下的python环境.(这里我采用的是ssh的远程连接)1.准备工作: 固定ce ...