Come impostare viste generiche negli URLS.PY di un'applicazione?
-
29-10-2019 - |
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?
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