Django'resolve':获取url名称而不是view_function

seb*_*piq 16 python django django-urls

我的问题很简单,我有一个网址,我想解决它,但获取url名称而不是与之关联的视图功能...

例如......这是urlconf:

urlpatterns = patterns('',
...
    url('^/books/$', book_list, name="overview_books"),
...
)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

>>> resolve('/books/')
'overview_books'
Run Code Online (Sandbox Code Playgroud)

你知道怎么办?

bar*_*zmm 30

在Django 1.3及更新版本中,您可以使用resolve功能:

from django.core.urlresolvers import resolve
print resolve('/books/').url_name
Run Code Online (Sandbox Code Playgroud)

  • 在较新版本的 django 中,它来自 django.urls 导入解析 (4认同)

pat*_*ick 4

使用此片段(最初取自djangosnippets.org/snippets/1378/);

>>> from my_projects.tools import resolve_to_name
>>> print resolve_to_name('/some/url')
'app.views.view'
>>> print resolve_to_name('/some/other/url')
'this_is_a_named_view'
Run Code Online (Sandbox Code Playgroud)

;)