2009-06-03 4 views
2

В The Django Book в главе 6 о администратора сайта, они говорят мне, чтобы добавить follwing URLPATTERN к urls.py:разница между admin.site.root и admin.site.urls

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

Но сделать она работает в моей системе, я должен был раскомментируйте следующую строку:

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

Может кто-нибудь просветить меня на то, что эти различия?

ответ

7

Как Габриэль, так и Антти, к сожалению, это неправильный путь.

admin.site.root - это поведение версии 1.0. Если вы загрузили 1.0 или 1.0.2, это то, что вы должны использовать.

Однако в последнее время произошли некоторые изменения в обработке URL-адресов для администратора Django, которые являются частью еще не выпущенного 1.1. Это прежде всего, чтобы использовать функцию reverse() для поиска URL-адресов администратора. Поэтому, если вы недавно проверили код, вам нужно будет использовать admin.site.urls.

Ваша ссылка на второе издание Книги Джанго, которое обновляется для версии 1.1, - и документы, которые, по словам Габриэля, также предназначены для текущей проверки, которая имеет новую версию.

(Только для полноты картины, я бы отметить, что версии Django до newforms-админ был слит, до 1,0, используемый admin.urls, не admin.site.urls или admin.site.root.)

0

В книге Джанго говорится о версии 0.9.6. С тех пор администратор был переписан. В Django 1.0 весь администратор обслуживается одним представлением (admin.site.root), которое анализирует остальную часть URL-адреса внутри.

Сравните admin directory of 0.96.3 с corresponding directory from 1.0.2. В последнем нет urls.py.

0

из исходного кода для функции admin.site.root:

корня (я, запрос, URL): Ручки основной маршрутизации URL для приложения администратора.

[...] метод может быть использован в качестве Джанго функции зрения, которая представляет собой интерфейс полного администратора для коллекции зарегистрированных моделей.

4

Пожалуйста, обратите внимание на следующее; Я боролся из-за (. *) Во второй записи ниже.

Работает, но не рекомендуется:

urlpatterns = шаблоны ('',
(г '^ админ /(.*)', admin.site.root)), )

Некорректное , и частично работает:

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

Правильно и хорошо работает:

urlpatterns = шаблоны ('', (г '^ админ /', включают в себя (admin.site.urls)), )

+0

Спасибо, это только что зафиксировало проблему, с которой я столкнулся, где каждый/admin/... url отправился на страницу администратора верхнего уровня. Удаление (. *) Было именно тем, что мне нужно было сделать. – Rog