2009-06-03 8 views
2

Dans le The Django Book au chapitre 6 sur le site Admin, ils me disent d'ajouter le follwing urlPattern à urls.py:Différence entre admin.site.root et admin.site.urls

urlpatterns = patterns('', 
    # ... 
    (r'^admin/', include(admin.site.urls)), 
    # ... 
) 

Mais pour il fonctionne sur mon système, je devais décommentez la ligne suivante:

(r'^admin/(.*)', admin.site.root), 

quelqu'un peut-il me éclairer sur quelles sont les différences?

Répondre

7

Gabriel et Antti l'ont tous deux dans le mauvais sens, malheureusement.

admin.site.root est la version 1.0 comportement. Si vous avez téléchargé 1.0 ou 1.0.2, c'est ce que vous devriez utiliser.

Cependant, il y avait quelques modifications à l'URL de manutention pour l'administration de Django très récemment, qui font partie du reste encore à être libéré-1.1. Ce sont principalement pour permettre d'utiliser la fonction reverse() pour rechercher des URL d'administration. Donc, si vous avez un achat récent du code, vous devez utiliser admin.site.urls. Votre lien est à la deuxième édition du livre Django, qui est en cours de mise à jour pour la version 1.1 - et les documents auxquels Gabriel fait référence sont également pour la caisse actuelle, qui a la nouvelle version.

(Juste pour être complet, je constate que les versions de Django avant newforms-admin a été fusionné, avant 1,0, utilisé admin.urls, non admin.site.urls ou admin.site.root.)

0

Le Django livre parle de la version 0.9.6. Depuis lors, l'administrateur a été réécrit. Dans Django 1.0 l'ensemble d'administration est servi par une vue unique (admin.site.root) qui analyse le reste de l'URL interne.

Comparez le admin directory of 0.96.3 avec le corresponding directory from 1.0.2. Il n'y a pas urls.py dans ce dernier.

0

à partir du code source pour la fonction admin.site.root:

racine (auto, demande, url): poignées principale routage d'URL pour l'application admin.

[...] méthode peut être utilisée en fonction de vue Django qui présente une interface d'administration complète pour la collection de modèles enregistrés.

4

S'il vous plaît observer les points suivants; J'ai lutté à cause de (. *) Étant dans la deuxième entrée ci-dessous.

Works, mais est dépréciée:

urlpatterns = patterns ('',
(r^admin /(.*) ', admin.site.root)), )

incorrect , et fonctionne partiellement:

urlpatterns = modèles ('',
(r '^ admin /(.*)', include (admin.site.urls)), )

correcte et fonctionne bien:

urlpatterns = patterns ('', (r^admin/', comprennent (admin.site.urls)), )

+0

Merci, cela a juste corrigé le problème que j'avais où chaque/admin/... url est allé à la page d'administration de premier niveau. Supprimer le (. *) Était exactement ce que j'avais besoin de faire. – Rog

Questions connexes