2012-05-10 7 views

risposta

15

È necessario reverse.

reverse('app1.view.view1') 

Se si vuole scoprire URL e reindirizzare ad esso, utilizzare redirect

redirect('app1.view.view1') 

Se vuole andare oltre e di non hardcode vostri nomi vista sia, è possibile name your URL patterns e utilizzare questi nomi invece .

1

Per questo è possibile utilizzare la funzione reverse. Puoi specificare spazi dei nomi e nomi rispettivamente per url-includes e URL, per semplificare il refactoring.

8

Dipende se si desidera farlo, se si desidera ottenere l'url in una vista (codice Python) è possibile utilizzare la funzione di reverse (documentation):

reverse('admin:app_list', kwargs={'app_label': 'auth'}) 

E se voglio usarlo in un modello, è possibile utilizzare il tag url (documentation):

{% url 'path.to.some_view' v1 v2 %} 
2

Se si desidera che l'url del view1 nel view1 il migliore è request.get_path()

3

Come detto da altri, la funzione reverse e url templatetags possono (dovrebbero) essere usati per questo.

Suggerirei di aggiungere un nome al modello URL

urlpatterns = patterns('', 
    url(r'^view1$', 'app1.view.view1', name='view1'), 
) 

e per invertire tale tendenza, grazie a questo nome

reverse('view1') 

che renderebbe il vostro codice più facile da rifattorizziamo

2

Sì , ovviamente puoi ottenere il percorso di visualizzazione url denominato 'view1' senza codificare l'URL.

Tutto quello che dovete fare è - basta importare la funzione 'reverse' da Django urlresolvers.

Basta guardare il codice di esempio riportato di seguito:

from django.core.urlresolvers import reverse 

from django.http import HttpResponseRedirect 

def some_redirect_fun(request): 

    return HttpResponseRedirect(reverse('view-name')) 
Problemi correlati