从请求uri获取视图功能?

mpe*_*pen 17 django

鉴于uri喜欢/home/我想要找到与之对应的视图函数,最好是以类似app.views.home或仅仅的形式<app_label>.<view_func>.有没有一个功能会给我这个?

Kil*_*nDS 30

您可以使用django提供的resolve方法来获取该函数.您可以使用__module__返回的函数的属性来获取应用程序标签.这将返回一个字符串project.app.views.所以像这样:

from django.core.urlresolvers import resolve

myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 5

自Django 1.3(2011年3月)以来resolve,urlresolvers模块中的函数返回一个ResolverMatch对象.它提供对已解析URL匹配的所有属性的访问,包括视图可调用路径.

>>> from django.core.urlresolvers import resolve
>>> match = resolve('/')
>>> match.func
<function apps.core.views.HomeView>
>>> match._func_path
'apps.core.views.HomeView'
Run Code Online (Sandbox Code Playgroud)


bit*_*ien 5

从 Django 2.0 开始,django.core.urlresolvers模块已移至django.urls.

你需要这样做:

from django.urls import resolve

myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
Run Code Online (Sandbox Code Playgroud)