Domanda

Diciamo che ho l'URLConf di un progetto che include myapp's urlconf:

urlpatterns = patterns('',
    (r'^myapp', include(myapp.urls)),
)

e a myapp/urls.py con alcuni percorsi definiti:

urlpatterns = patterns('myapp.views',
    (r'^manager$', 'manager_view'),
)

Voglio usare viste generiche in myapp (cioè visualizzare un elenco di articoli), ma se lo definisco in myapp/urls.py come questo:

items_list = {
    'queryset': Item.objects.all(),
}

urlpatterns = patterns('myapp.views',
    (r'^manager$', 'manager_view'),
    (r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
        items_list),
)

Questo non funzionerà a causa del myapp.views prefisso. Ovviamente potrei mettere i modelli di viste generiche negli URLS.PY del progetto, ma poi avere un URLS.PY separato per l'app non avrebbe più senso.

Quindi, come posso usare viste generiche nell'URLConf di un'app?

È stato utile?

Soluzione

Non è necessario utilizzare il prefisso: puoi specificare l'intero percorso per ciascuna delle tue viste per ogni URL:

urlpatterns = patterns('',
    (r'^manager$', 'myapp.views.manager_view'),
    (r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
        items_list),
)

In alternativa, puoi avere più urlpattern in un singolo urlconf e concatenarli:

urlpatterns = patterns('myapp.views',
    (r'^manager$', 'manager_view'),
)

urlpatterns += patterns('django.views.generic',
    (r'^items/(?P<page>[0-9]+)$', 'list_detail.object_list',
        items_list),
)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top