Question

Disons que j'ai l'urlconf d'un projet qui inclut myappL'URLconf de :

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

et un myapp/urls.py avec quelques itinéraires définis :

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

Je souhaite utiliser des vues génériques dans myapp (c'est à dire.pour afficher une liste d'articles), mais si je la définis dans myapp/urls.py comme ça:

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),
)

Cela ne fonctionnera pas à cause du myapp.views préfixe.Bien sûr, je pourrais mettre les modèles de vues génériques dans le fichier urls.py du projet, mais avoir un urls.py distinct pour l'application n'aurait plus de sens.

Alors, comment puis-je utiliser des vues génériques dans l'urlconf d'une application ?

Était-ce utile?

La solution

Vous n'avez pas du tout besoin d'utiliser le préfixe - vous pouvez spécifier le chemin complet vers chacune de vos vues pour chaque URL :

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

Alternativement, vous pouvez avoir plusieurs modèles d'URL dans une seule configuration d'URL et les concaténer :

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),
)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top