zoukankan      html  css  js  c++  java
  • Django中请求的生命周期 和 FBV模式和CBV模式

    Django的生命周期就是你的 一个请求所发生的整个流程

    Django的生命周期内到底发生了什么呢??

    1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
    请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
    
    2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
    一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
    3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
    4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户

    首先: wsgi     -------->中间件----------->路由系统----------->视图函数------------> 模板和orm  --------------->返回给请求者

    wsgi:  是web服务网关接口,一套协议

    这套协议的实现是wsgi这个模块来实现 它内部封装了soccet来实现

      django中实现wsgi的模块有: wsgiref  和uwsgi模块

    中间件:

    路由系统就是django中的url

    视图函数:就是views

    模板是:template中的前端界面

    orm   是你的django去操作你的数据库中的内容

     wsgi是一个协议 是http协议

    CSRF_TOKEN

    可以理解为 ,为了防止非法的登陆  预防黑客登陆  因为是先要get请求然后 给你的get发送一个随机字符串 然后你下一次的post请求的时候必须要带着这个随机字符串 不然就会不让你访问,

    防止黑客什么的直接post来进入

    FBV模式和CBV模式:

    FBV: 一个url对应一个视图函数

    CBV:一个url对应一个类

    一个url对应一个视图函数,这个模式叫做FBV(Function Base Views)

    除了FBV之处,Django中还有另外一种模式叫做CBV(Class Base views),即一个url对应一个类

    我们经常写的直接定义函数的就是FBV

    CBV是类的形式:但是这个类需要继承一个View 并且你的url内也的写法也不一样需要用到as_view

    CBV 需要注意定义一定要继承views.View注册路由一定要写 类名.as_view()

    CBV的 urls:

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'Index/',views.Index.as_view),
    
        
    ]
    # CBV  就是先导入views然后继承它 然后  把post和get放在两个方法中
    from django import views
    
    class Index(views.View):
    
        def get(self,request):  # 如果是get操作的时候
            return render(request,'index.html')
    
    
        def post(self,request):
            return HttpResponse('ok')
  • 相关阅读:
    2019-9-2-简单搭建自己的博客
    2018-7-15-WPF-在-DrawingContext-的-push-如何使用
    2018-7-15-WPF-在-DrawingContext-的-push-如何使用
    2019-7-3-Roslyn-理解-msbuild-的清理过程
    2019-7-3-Roslyn-理解-msbuild-的清理过程
    MySQL数据库事务详解
    求一个Map中最大的value值,同时列出键,值
    Struts1入门实例(简单登录)
    java字符流操作flush()方法及其注意事项
    HDU 1874 畅通工程续 2008浙大研究生复试热身赛(2)
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9319881.html
Copyright © 2011-2022 走看看