Django 'resolve':获取URL名称而非视图函数

18 投票
2 回答
10571 浏览
提问于 2025-04-16 00:43

我的问题很简单,我有一个网址,我想要解析它,但是我得到的是这个网址的名字,而不是和它相关联的视图函数...

举个例子... 这是网址配置:

urlpatterns = patterns('',
...
    url('^/books/$', book_list, name="overview_books"),
...
)

而我想要的是:

>>> resolve('/books/')
'overview_books'

你知道有什么方法可以做到这一点吗?

2 个回答

33

在Django 1.3及更新版本中,你可以使用resolve这个函数:

from django.core.urlresolvers import resolve
print resolve('/books/').url_name
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'

;)

撰写回答