Django的哪一部分实际上调用了views.py中的视图?

时间:2014-07-28 10:22:46

标签: python django views

我很想知道Django的内部工作原理。

我想要开始的一件事是跟随我的views.py文件中的函数向后调用链。

例如,我有一个功能

def user_page(request):
     ...
使用url

调用

...
url(r'^user/$', views.user_page, name='user_page'),

实际读取URL的Django代码在哪里,匹配模式并调用我的view函数?

2 个答案:

答案 0 :(得分:1)

首先,您有webserver / python网关的具体细节(wsgifcgi脚本等)。不管怎样,这个网关特定部分最终实现了一些django.core.handlers.base.BaseHandler子类 - 很可能是django.core.handlers.wsgi.WSGIHandler,它实际上是1.5.x中唯一的内置BaseHandler子类(FWIW都是内置的开发者) server和runfcgi命令现在最终使用wsgi)。

假设您处于此配置状态(使用WSGIHandler这种或那种方式),真正的" django"入口点是WSGIHandler.__call__(environ, start_response),后者又调用self.get_response(request),它实际上是从BaseHandler继承的,这是大多数调度(中间件,URL解析,视图调用等)发生的地方

答案 1 :(得分:-3)

Django实际调用设置部分来检查url模式。然后从该模式再次搜索url的相应视图函数。