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

Posted

技术标签:

【中文标题】Django \'resolve\':获取 url 名称而不是 view_function【英文标题】:Django 'resolve' : get the url name instead of the view_functionDjango 'resolve':获取 url 名称而不是 view_function 【发布时间】:2011-03-11 01:14:57 【问题描述】:

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

例如...这是 urlconf :

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

这就是我想要的:

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

你知道有什么办法吗?

【问题讨论】:

【参考方案1】:

使用这个sn-p(最初取自djangosn-ps.org/sn-ps/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'

;)

【讨论】:

【参考方案2】:

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

from django.core.urlresolvers import resolve
print resolve('/books/').url_name

【讨论】:

在你有的情况下也很有用:resolver = resolve('/books/39/') 然后requested_book_id = resolver.args[0] 在较新版本的 django 中,它的 from django.urls import resolve

以上是关于Django 'resolve':获取 url 名称而不是 view_function的主要内容,如果未能解决你的问题,请参考以下文章

django 配置URLconf和获取值

Django 路由

如何在django中使用python获取应用程序名称

vue 带参数跳转打开新窗口 $router.resolve 参数不在url中

vue 带参数跳转打开新窗口 $router.resolve 参数不在url中

怎么在django中获取URL上的参数