2011-10-05 7 views
5

Con le visualizzazioni basate su classi che sono diventate MOLTO meglio in Django, sto riscontrando un problema di "buone pratiche" quando si implementa una vista basata su classi. Fondamentalmente si riduce allo URL template tag.Django: Best Practice per URL conf, url modello tag

dato un urls.py come questo:

urlpatterns = patterns('some_app.views', 
    url(r'^$', 'index', name='some_app_index') 
) 

Questo tag può prendere un percorso di una visione:

{% url some_app.views.index %} 

o il nome di un URL:

{% url some_app_index %} 

Ora, con un conf di url basato sulla classe, si finisce p con un URL simile a questo:

from some_app.views import Index 

urlpatterns = patterns('', 
    url(r'^$', Index.as_view(), name='some_app_index') 
) 

Il che significa che usare {% url some_app.views.index %} non funziona più, ma {% url some_app_index %} fa ancora. (E {% url some_app.views.Index.as_view %} non sembra essere una soluzione).


Quindi, la mia domanda è, qual è la procedura migliore per fare riferimento a conf URL da un modello?

A questo punto, ho creduto che l'utilizzo del metodo path.to.view fosse migliore, dato che era pulito con un namespace. Tuttavia, con le visualizzazioni basate su classi sempre migliori, sta usando il url name un modo migliore per andare? In questo caso, lo spazio dei nomi dipende completamente dall'attributo del nome impostato dallo sviluppatore dell'app in modo da separare il nome dell'URL da altre app ...

Pensieri? Non sono riuscito a trovare un "do it this way" nella documentazione di Django, ma se qualcuno ha scritto su questo, mi piacerebbe leggerlo.

risposta

8

Uso sempre i nomi.

Oltre al problema citato con i percorsi, si avrebbe anche un problema se si hanno due URL che puntano alla stessa vista.

+0

Mi stavo chiedendo cosa potrebbe succedere. Questo ovviamente è meglio! – Alvaro