day18 js 正则,UI框架,Django helloworld 以及完整工作流程
只匹配数字:
所以JS 正则的使用方式:
1 写一个满足需求的js正则匹配式
2 使用test来验证是否符合
那么如果我们想获取里面的数据该怎么办呢?
exec:
默认只拿第一个
使用分组:
全局匹配:
注意:会从开始一直匹配,每次匹配一个,直到匹配完,会返回一个null 然后再匹配的话会从头重新开始
全局使用分组:
每次返回两个值,第一个为匹配的,第二个为去除正则后的数据
复习下正则:
这里再声明一下,使用自定义动作的时候一定要加上return 才能取消自带的动作
对于checkbox 来说,默认事件先执行,然后才执行自定的事件
完整验证过程:
学习框架:
已知的有
1 jQuery UI
2 Bootstrap
BootStrap 可适用于前端展示及后端管理的都可以
响应式布局效果:
在修改别人的插件的时候,要更改东西的时候就使用 important 表名最重要的!!! 这样就不关心前后顺序了
各种轮播图等、 都有插件
所有web框架的本质:
python 3 中三种方式转换为字节:
判断客户端的请求路径
使用字典形式,省去做if 判断:
从文件中返回数据:
分开写:
所谓各种名词 就是下面的框架:
开始 Django
1 安装
2 创建工程
3 运行
访问:
添加一个自定义的url
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 后首先需要操作:
使用静态文件:
2 修改配置文件,添加静态文件目录
STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
3 添加静态文件
4 修改html中的引用
5 测试
注释掉跨站 csrf:
判断用户是GET 还是POST
获取用户提交的信息:
程序里写:
完整的基本的用户名密码认证:
实践:
1 修改html 增加name 在POST 提交的时候才能分辨是什么内容,添加Django 特有的替换字符串的变量
action 的url 要和urls 里配置的一样,要么都有/ 要么都没有,不然会报错。
2 程序添加判断请求方式,获取输入的数据,并判断是否正确
3 实验:
在html 页面中使用for 循环来生成网页信息:
获取数据并添加到当前页面:
HTML页面:
<!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