day18 js 正则,UI框架,Django helloworld 以及完整工作流程

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

posted @ 2016-12-08 18:00  yangever  阅读(234)  评论(0编辑  收藏  举报