Django13

回顾+补充

  1.Django请求生命周期

    -url  ->  视图

    -中间件  ->  url  ->视图..

    -web框架本质:socket

    -wsgiref+django  现在自己写的是这样

    -uwsgi+django  生产中实际

  WSGI协议:web服务网关接口

    

    整个生命周期  wsgi+django

客户端  ==》  wsgi  ==》django

                ==》中间件  ==》视图函数   ==》数据库操作  ==》模板渲染  然后再返回

from wsgiref.simple_server import make_server

 
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type''text/html')])
    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
 
wsgi给了django  请求和一个容器
django 返回给wsgi   容器里的东西作为响应头,而return的东西作为响应体。
wsgi再将东西返回给用户
 
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()
 
 
  2.MVC  MTV
  models(数据库,模型)  views(htmlmoban)  controller(业务逻辑(def函数))  ==》MVC
  models(数据库,模型)  templates(html模板)  views(业务逻辑)    ==》MTV
  django  是MTV
 

今日内容:

  1.中间件

  2.Form验证

  

 

  1.中间件

    -是个类

      process_request

        

      process_response(...response)

        必须有返回值

        return response

      

     process_view

     process_exception

     process_template_view

    -需要注册中间件

      [

 

        ]

    -应用:对所有请求或一部分请求做批量处理

   2.Form验证

    -需要对请求数据做验证

    -获取到数据然后进行验证

      -login :  邮箱zhengze

      -register:  邮箱正则

    问题:

      1-无法记住上次输入的内容,刷新页面数据消失

      2-重复进行用户数据校验:正则,长度,是否为空

    Django提供,Form组件

      1:定义规则

        from django.forms import Form

        from django.forms import fields

        class XXX(Form)

          xx = fields.CharField(required=True,max_length=16,min_length=6,error_message={'required':'不能为空'})

            field.EmailFiedl()

            field.IntegerField()

      使用:

        根据前端传过来的name属性  与  类中写的名字一一匹配

        obj = xxx(request.POST)

        #是否校验成功

        v = obj.is_valid()

        #所有错误信息

        obj.errors

        #正确信息(字典类型)

        obj.cleaned_data

posted on 2018-09-21 11:42  castiel_lee  阅读(80)  评论(0)    收藏  举报

导航