第五章、views解读

前言

前一章,我们已经说明了django 是如何从 django 框架处理,走到 rest_framework 的处理的,这一章就要看一下,走到 rest_framework 框架后,调用的 dispatch 函数,到底做了什么东西,这里要揭晓了。

APIView

def dispatch(self, request, *args, **kwargs):
        """
        `.dispatch()` is pretty much the same as Django's regular dispatch,
        but with extra hooks for startup, finalize, and exception handling.
        """
        self.args = args
        self.kwargs = kwargs
        request = self.initialize_request(request, *args, **kwargs)
        self.request = request
        self.headers = self.default_response_headers  # deprecate?

        try:
            self.initial(request, *args, **kwargs)
            # Get the appropriate handler method
            if request.method.lower() in self.http_method_names:
                handler = getattr(self, request.method.lower(),
                                  self.http_method_not_allowed)
            else:
                handler = self.http_method_not_allowed

            response = handler(request, *args, **kwargs)

        except Exception as exc:
            response = self.handle_exception(exc)

        self.response = self.finalize_response(request, response, *args, **kwargs)
        return self.response

dispatch 函数中,先是将 request 对象更换为 rest_framework中的 Request 对象,又做了一个initial初始化操作,然后从 request 的 method 方法,来查找对应的处理函数,最后再返回 reponse。这里我们有两个注意点,一个是我们都有哪些方法,这些方法是怎么赋值的?这个问题,我们将跟 Router 那一章最后的 method map 问题,一起探讨明白;二是我们调用这个方法,又走到了哪些流程,我们将在第六章、method 讲解清楚后,继续我们这个流程的分析。

http 方法所对应的函数处理

如果你去第六章看了 method 的详解,那么你应该清楚了,默认情况下,http 方法所对应的函数处理是固定的,某个 url,比如get 方法,对应了 list 函数,post 方法,对应了create 函数。我们看一下 list 函数以及 create 函数都做了什么。
我们在 views.py 与 viewset.py 中,去找 list 函数,create 函数,但是这里貌似并未提供这些函数,没办法,我只能继续,找例子中,我用的是哪些类

class UserViewSet(ModelViewSet):

好,那我们去找 ModelViewSet
在 viewset解读处

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,234评论 19 139
  • Django: csrf防御机制 csrf攻击过程 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登...
    lijun_m阅读 1,118评论 0 0
  • 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如...
    时待吾阅读 3,489评论 0 19
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,763评论 1 180
  • 【按】宝鸡市第三次质量检测试题的诗歌鉴赏选择了杜牧的《旅宿》,因对答案的语言组织工作不满意,我就广泛地搜索材料,翻...
    东篱文集阅读 1,683评论 0 1