JS正则:
   text     判断字符串是否符合规定的正则表达式
   exec    获取匹配的数据
 
默认情况下:
只要能匹配到就返回true 否则返回false

只匹配数字:

 

所以JS 正则的使用方式:

1 写一个满足需求的js正则匹配式

2 使用test来验证是否符合

那么如果我们想获取里面的数据该怎么办呢?

exec:

默认只拿第一个

使用分组:

全局匹配:

注意:会从开始一直匹配,每次匹配一个,直到匹配完,会返回一个null 然后再匹配的话会从头重新开始

全局使用分组:

每次返回两个值,第一个为匹配的,第二个为去除正则后的数据

复习下正则:

多行匹配:
默认:

 使用多行匹配:
会把每一行的开头都作为一个字符串的开头来匹配,尽管这是一个字符串!

这里再声明一下,使用自定义动作的时候一定要加上return  才能取消自带的动作

对于checkbox 来说,默认事件先执行,然后才执行自定的事件

完整验证过程:

 1 js 前端验证  (可以禁用,一旦禁用,只能靠后端验证)
 2 后端python 验证

学习框架:

已知的有

1 jQuery UI

2 Bootstrap

BootStrap 可适用于前端展示及后端管理的都可以

响应式布局效果:

在修改别人的插件的时候,要更改东西的时候就使用 important 表名最重要的!!! 这样就不关心前后顺序了

各种轮播图等、  都有插件

所有web框架的本质:

使用一个模块,使用python3

python 3 中三种方式转换为字节:

判断客户端的请求路径

使用字典形式,省去做if 判断:

从文件中返回数据:

分开写:

所谓各种名词 就是下面的框架:

开始 Django

1 安装

2 创建工程

3 运行

访问:

添加一个自定义的url

实践:
修改 urls.py
from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse
def home(request):
return HttpResponse('<h1>Frist</h1>')
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/', home),
]

写一个时间更新的页面:

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse
def time(request):
import time
info = time.ctime()
return HttpResponse(['<h1>时间服务器</h1>',info])
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^time/', time),
]

创建一个网站的多个app用来处理不同的事情:

实践:

然后把逻辑代码放到新的目录里:

修改urls:

访问:

app目录的详细解释:

一行实现读取文件:

文件是通过配置里的目录来配置的,不然找不到文件的

 实践:

1 编写登陆逻辑函数

from django.shortcuts import HttpResponse
from django.shortcuts import render
def login(request):
return render(request,'login.html')
def time(request):
import time
info = time.ctime()
return HttpResponse(['<h1>时间服务器</h1>',info])

2 编写登陆页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</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="text" />
<input type="submit" value="提交" />
</p>
</form>
</body>
</html>

3添加路由

4 检查配置

5 启动并测试

静态文件配置:

创建Django app 后首先需要操作:

使用静态文件:

实践:
1 创静态目录

2  修改配置文件,添加静态文件目录

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

3  添加静态文件

4  修改html中的引用

5 测试

注释掉跨站 csrf:

 判断用户是GET 还是POST

 获取用户提交的信息:

判断数据:
如果需要跳转需要用到redirect 模块,需要导入:

Django特有的数据交互方式:
用户登陆信息不正确后返回一个错误信息

程序里写:

 完整的基本的用户名密码认证:

实践:

1 修改html 增加name 在POST 提交的时候才能分辨是什么内容,添加Django 特有的替换字符串的变量

action 的url 要和urls 里配置的一样,要么都有/ 要么都没有,不然会报错。

2 程序添加判断请求方式,获取输入的数据,并判断是否正确

3 实验:

在html 页面中使用for 循环来生成网页信息:

 获取数据并添加到当前页面:

HTML页面:

 
实践:
1 添加静态页面,并做可以for 循环的页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="margin: 0">
<div style="height: 48px;background-color: #dddddd"></div>
<div>
<form action="/home" method="post">
<input type="text" name="username" placeholder="用户名" />
<input type="text" name="email" placeholder="邮箱"/>
<input type="text" name="gender" placeholder="性别"/>
<input type="submit" value="添加" />
</form>
</div>
<div>
<table>
{% for row in user_list %}
<tr>
<td>{{ row.username }}</td>
<td>{{ row.gender }}</td>
<td>{{ row.email }}</td>
</tr>
{% endfor %}
</table>
</div>
</body>
</html>

2 添加路由并添加处理的函数

urls

业务逻辑函数

USER_LIST =[
{'username':'alex','email':'abc@12.com','gender':'男'},
{'username':'alex','email':'abc@12.com','gender':'男'}
]
def home(request):
if request.method == 'POST':
#在request中获取用户提交的数据
u = request.POST.get('username')
e = request.POST.get('email')
g = request.POST.get('gender')
temp = {'username':u,'email':e,'gender':g}
USER_LIST.append(temp)
return render(request,'home.html',{'user_list':USER_LIST})

3 启动并测试

重新打开页面也还有数据,但是重启程序就没有了,所以需要把数据写到存储中,例如写入redis 中,就可以持久化了

经过以上一些实践,我们大概了解了Djanago 的工作方式,下面还Django的处理流程及部件组成图:

回顾一下以上的内容,做一个整理:

Django的程序完成开发流程:

模板语言的语法:

if 也可以嵌套,直接在里面写,但是要记得写上结尾符

EOF

day18 js 正则,UI框架,Django helloworld 以及完整工作流程的更多相关文章

  1. nodejs的Express框架源码分析、工作流程分析

    nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...

  2. WEB前端JS与UI框架

    前端Js框架汇总 概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人 ...

  3. js客户端UI框架

    Best jQuery UI http://b-jui.com/ jQuery EasyUI http://www.jeasyui.com/ bootstrap学习网: http://www.runo ...

  4. scrapy 基础组件专题(一):scrapy框架中各组件的工作流程

    Scrapy 使用了 Twisted 异步非阻塞网络库来处理网络通讯,整体架构大致如下(绿线是数据流向): Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事 ...

  5. Django的JWT机制工作流程

    https://blog.csdn.net/bin_1022/article/details/81278513 django-rest-framework-jwt token 怎么解码得到用户名? d ...

  6. 移动端常用UI框架

    作为一个前端人员来说,总结几款相对来说不错的用于移动端开发的UI框架是非常必要的,以下几种移动端UI框架就能基本满足工作中开发需要,根据项目需求,选用合适的框架搭建项目,更能容易提高开发效率. 一.M ...

  7. Android酷炫实用的开源框架(UI框架)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  8. Android酷炫实用的开源框架(UI框架) 转

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  9. 黄聪:Android酷炫实用的开源框架(UI框架)(转)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

随机推荐

  1. java如何导入Excel文件

    Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...

  2. Thread.sleep 与Thread.currentThread.sleep

    参考博客: https://blog.csdn.net/guangyinglanshan/article/details/51645053 公司项目近段时间要使用thread, 个人想去了解Threa ...

  3. [SVN]TortoiseSVN报“500 Internal Server Error”错误的解决方法

    背景:由于某种原因,本人重启了一下SVN服务的物理机,重启过后发现所有人访问SVN都报如下错误. 由于重启之前是没有做过任何改动,所以面对这个错误有点摸不着头脑,防火墙.网管.清缓存等方法都试过,还没 ...

  4. springMvc-reset风格和对静态资源的管理

    1.所谓rest风格及比较优雅的,没有一大堆后缀的风格 2.对静态资源的管理,及样式.图片等不需要springMvc过滤 代码: 1.在springMvc的配置文件中添加mvc标签 <?xml ...

  5. javascript模块化---requirejs

    requirejs是异步执行 为什么会出现模块化1.不定什么时候,自己就将全局变量改变了2.函数名的冲突3.依赖关系不好管理如果b.js依赖a.js那么b必须放在a的下面解决的办法1.自执行函数来包装 ...

  6. 动态规划专题(五)——斜率优化DP

    前言 斜率优化\(DP\)是难倒我很久的一个算法,我花了很长时间都难以理解.后来,经过无数次的研究加以对一些例题的理解,总算啃下了这根硬骨头. 基本式子 斜率优化\(DP\)的式子略有些复杂,大致可以 ...

  7. python_23_tuple

    #元组只能统计和获取下表,不能插入之类的.元组和列表差不多,也是存一组数,只是它一旦创建,便不能再修改,所以又叫只读列表 names=('QiZhiguang','LiuGuannan','Liang ...

  8. PAT (Basic Level) Practise (中文)- 1005. 继续(3n+1)猜想 (25)

    http://www.patest.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证 ...

  9. LigerUI的下拉框行和树的设置(表单生成)

    http://blog.csdn.net/dxnn520/article/details/8194767 // ---------------------- // [下拉树设置 -- 单选] {dis ...

  10. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...