2010-07-02 3 views
14

Il mio problema è semplice, ho un url, vorrei risolverlo, ma ottenere il nome url invece della funzione vista associata ad esso ...Django 'resolve': ottieni il nome dell'URL invece della view_function

per esempio ... questo è urlconf:

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

e questo è quello che vorrei:

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

sapete un modo per fare questo?

risposta

3

Utilizzare questo snippet (originariamente preso da 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' 

;)

28

In Django 1.3 e successivi è possibile utilizzare la funzione resolve:

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