diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2005-10-19 01:09:05 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2005-10-19 01:09:05 +0000 |
| commit | f07e5d4f5df5ca9ca3366d7ecc4b01c490c13198 (patch) | |
| tree | 1b73d89471554d058cb46bc13d17bd3687c638fa | |
| parent | fd3d579179581b1fa460e13115471d58fec0c8f6 (diff) | |
Fixed #627 -- BACKWARDS-INCOMPATIBLE CHANGE. Admin is now an app, not a middleware. See BackwardsIncompatibleChanges for a full list of changes and information on how to update your code.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@948 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/conf/project_template/settings.py (renamed from django/conf/project_template/settings/main.py) | 10 | ||||
| -rw-r--r-- | django/conf/project_template/settings/__init__.py | 0 | ||||
| -rw-r--r-- | django/conf/project_template/settings/admin.py | 18 | ||||
| -rw-r--r-- | django/conf/project_template/settings/urls/__init__.py | 0 | ||||
| -rw-r--r-- | django/conf/project_template/settings/urls/admin.py | 6 | ||||
| -rw-r--r-- | django/conf/project_template/urls.py (renamed from django/conf/project_template/settings/urls/main.py) | 3 | ||||
| -rw-r--r-- | django/contrib/admin/media/css/base.css (renamed from django/conf/admin_media/css/base.css) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/css/changelists.css (renamed from django/conf/admin_media/css/changelists.css) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/css/global.css (renamed from django/conf/admin_media/css/global.css) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/img/admin/arrow-down.gif (renamed from django/conf/admin_media/img/admin/arrow-down.gif) | bin | 80 -> 80 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/arrow-up.gif (renamed from django/conf/admin_media/img/admin/arrow-up.gif) | bin | 838 -> 838 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/changelist-bg.gif (renamed from django/conf/admin_media/img/admin/changelist-bg.gif) | bin | 58 -> 58 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/chooser-bg.gif (renamed from django/conf/admin_media/img/admin/chooser-bg.gif) | bin | 199 -> 199 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/chooser_stacked-bg.gif (renamed from django/conf/admin_media/img/admin/chooser_stacked-bg.gif) | bin | 212 -> 212 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/default-bg-reverse.gif (renamed from django/conf/admin_media/img/admin/default-bg-reverse.gif) | bin | 843 -> 843 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/default-bg.gif (renamed from django/conf/admin_media/img/admin/default-bg.gif) | bin | 844 -> 844 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon-no.gif (renamed from django/conf/admin_media/img/admin/icon-no.gif) | bin | 176 -> 176 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon-yes.gif (renamed from django/conf/admin_media/img/admin/icon-yes.gif) | bin | 299 -> 299 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_addlink.gif (renamed from django/conf/admin_media/img/admin/icon_addlink.gif) | bin | 119 -> 119 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_alert.gif (renamed from django/conf/admin_media/img/admin/icon_alert.gif) | bin | 145 -> 145 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_calendar.gif (renamed from django/conf/admin_media/img/admin/icon_calendar.gif) | bin | 192 -> 192 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_changelink.gif (renamed from django/conf/admin_media/img/admin/icon_changelink.gif) | bin | 119 -> 119 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_clock.gif (renamed from django/conf/admin_media/img/admin/icon_clock.gif) | bin | 390 -> 390 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_deletelink.gif (renamed from django/conf/admin_media/img/admin/icon_deletelink.gif) | bin | 181 -> 181 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_error.gif (renamed from django/conf/admin_media/img/admin/icon_error.gif) | bin | 319 -> 319 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_searchbox.png (renamed from django/conf/admin_media/img/admin/icon_searchbox.png) | bin | 667 -> 667 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/icon_success.gif (renamed from django/conf/admin_media/img/admin/icon_success.gif) | bin | 341 -> 341 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/nav-bg-grabber.gif (renamed from django/conf/admin_media/img/admin/nav-bg-grabber.gif) | bin | 116 -> 116 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/nav-bg-reverse.gif (renamed from django/conf/admin_media/img/admin/nav-bg-reverse.gif) | bin | 186 -> 186 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/nav-bg.gif (renamed from django/conf/admin_media/img/admin/nav-bg.gif) | bin | 273 -> 273 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector-add.gif (renamed from django/conf/admin_media/img/admin/selector-add.gif) | bin | 606 -> 606 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector-addall.gif (renamed from django/conf/admin_media/img/admin/selector-addall.gif) | bin | 358 -> 358 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector-remove.gif (renamed from django/conf/admin_media/img/admin/selector-remove.gif) | bin | 398 -> 398 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector-removeall.gif (renamed from django/conf/admin_media/img/admin/selector-removeall.gif) | bin | 355 -> 355 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector-search.gif (renamed from django/conf/admin_media/img/admin/selector-search.gif) | bin | 552 -> 552 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector_stacked-add.gif (renamed from django/conf/admin_media/img/admin/selector_stacked-add.gif) | bin | 612 -> 612 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/selector_stacked-remove.gif (renamed from django/conf/admin_media/img/admin/selector_stacked-remove.gif) | bin | 401 -> 401 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tool-left.gif (renamed from django/conf/admin_media/img/admin/tool-left.gif) | bin | 197 -> 197 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tool-left_over.gif (renamed from django/conf/admin_media/img/admin/tool-left_over.gif) | bin | 203 -> 203 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tool-right.gif (renamed from django/conf/admin_media/img/admin/tool-right.gif) | bin | 198 -> 198 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tool-right_over.gif (renamed from django/conf/admin_media/img/admin/tool-right_over.gif) | bin | 200 -> 200 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tooltag-add.gif (renamed from django/conf/admin_media/img/admin/tooltag-add.gif) | bin | 932 -> 932 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tooltag-add_over.gif (renamed from django/conf/admin_media/img/admin/tooltag-add_over.gif) | bin | 336 -> 336 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tooltag-arrowright.gif (renamed from django/conf/admin_media/img/admin/tooltag-arrowright.gif) | bin | 351 -> 351 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif (renamed from django/conf/admin_media/img/admin/tooltag-arrowright_over.gif) | bin | 354 -> 354 bytes | |||
| -rw-r--r-- | django/contrib/admin/media/js/SelectBox.js (renamed from django/conf/admin_media/js/SelectBox.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/SelectFilter.js (renamed from django/conf/admin_media/js/SelectFilter.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/SelectFilter2.js (renamed from django/conf/admin_media/js/SelectFilter2.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/admin/CollapsedFieldsets.js (renamed from django/conf/admin_media/js/admin/CollapsedFieldsets.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/admin/DateTimeShortcuts.js (renamed from django/conf/admin_media/js/admin/DateTimeShortcuts.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/admin/RelatedObjectLookups.js (renamed from django/conf/admin_media/js/admin/RelatedObjectLookups.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/admin/ordering.js (renamed from django/conf/admin_media/js/admin/ordering.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/calendar.js (renamed from django/conf/admin_media/js/calendar.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/core.js (renamed from django/conf/admin_media/js/core.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/dateparse.js (renamed from django/conf/admin_media/js/dateparse.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/getElementsBySelector.js (renamed from django/conf/admin_media/js/getElementsBySelector.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/timeparse.js (renamed from django/conf/admin_media/js/timeparse.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/media/js/urlify.js (renamed from django/conf/admin_media/js/urlify.js) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/404.html (renamed from django/conf/admin_templates/404.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/500.html (renamed from django/conf/admin_templates/500.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/base.html (renamed from django/conf/admin_templates/base.html) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/base_site.html (renamed from django/conf/admin_templates/base_site.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/delete_confirmation.html (renamed from django/conf/admin_templates/delete_confirmation_generic.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/index.html (renamed from django/conf/admin_templates/index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/login.html (renamed from django/conf/admin_templates/login.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/object_history.html (renamed from django/conf/admin_templates/admin_object_history.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/template_validator.html (renamed from django/conf/admin_templates/template_validator.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/bookmarklets.html (renamed from django/conf/admin_templates/doc/bookmarklets.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/index.html (renamed from django/conf/admin_templates/doc/index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/missing_docutils.html (renamed from django/conf/admin_templates/doc/missing_docutils.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/model_detail.html (renamed from django/conf/admin_templates/doc/model_detail.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/model_index.html (renamed from django/conf/admin_templates/doc/model_index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/template_detail.html (renamed from django/conf/admin_templates/doc/template_detail.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/template_filter_index.html (renamed from django/conf/admin_templates/doc/template_filter_index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/template_tag_index.html (renamed from django/conf/admin_templates/doc/template_tag_index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/view_detail.html (renamed from django/conf/admin_templates/doc/view_detail.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin_doc/view_index.html (renamed from django/conf/admin_templates/doc/view_index.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/logged_out.html (renamed from django/conf/admin_templates/registration/logged_out.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/password_change_done.html (renamed from django/conf/admin_templates/registration/password_change_done.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/password_change_form.html (renamed from django/conf/admin_templates/registration/password_change_form.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/password_reset_done.html (renamed from django/conf/admin_templates/registration/password_reset_done.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/password_reset_email.html (renamed from django/conf/admin_templates/registration/password_reset_email.html) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/templates/registration/password_reset_form.html (renamed from django/conf/admin_templates/registration/password_reset_form.html) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templatetags/adminapplist.py (renamed from django/templatetags/adminapplist.py) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/templatetags/adminmedia.py (renamed from django/templatetags/adminmedia.py) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/templatetags/log.py (renamed from django/templatetags/log.py) | 2 | ||||
| -rw-r--r-- | django/contrib/admin/urls/admin.py (renamed from django/conf/urls/admin.py) | 0 | ||||
| -rw-r--r-- | django/contrib/admin/views/main.py | 12 | ||||
| -rw-r--r-- | django/contrib/admin/views/template.py | 2 | ||||
| -rw-r--r-- | django/core/management.py | 13 | ||||
| -rw-r--r-- | django/core/servers/basehttp.py | 2 | ||||
| -rw-r--r-- | django/middleware/admin.py | 126 | ||||
| -rw-r--r-- | django/models/auth.py | 46 | ||||
| -rw-r--r-- | docs/django-admin.txt | 4 | ||||
| -rw-r--r-- | docs/faq.txt | 3 | ||||
| -rw-r--r-- | docs/middleware.txt | 21 | ||||
| -rw-r--r-- | docs/modpython.txt | 32 | ||||
| -rw-r--r-- | docs/settings.txt | 10 | ||||
| -rw-r--r-- | docs/tutorial01.txt | 25 | ||||
| -rw-r--r-- | docs/tutorial02.txt | 93 | ||||
| -rw-r--r-- | docs/tutorial03.txt | 43 |
101 files changed, 141 insertions, 376 deletions
diff --git a/django/conf/project_template/settings/main.py b/django/conf/project_template/settings.py index 1bde7df10a..838375cbb7 100644 --- a/django/conf/project_template/settings/main.py +++ b/django/conf/project_template/settings.py @@ -27,22 +27,28 @@ MEDIA_ROOT = '' # Example: "http://media.lawrence.com" MEDIA_URL = '' +# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# trailing slash. +# Examples: "http://foo.com/media/", "/media/". +ADMIN_MEDIA_PREFIX = '/media/' + # Make this unique, and don't share it with anybody. SECRET_KEY = '' # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( -# 'django.core.template.loaders.app_directories.load_template_source', 'django.core.template.loaders.filesystem.load_template_source', + 'django.core.template.loaders.app_directories.load_template_source', # 'django.core.template.loaders.eggs.load_template_source', ) MIDDLEWARE_CLASSES = ( "django.middleware.common.CommonMiddleware", + "django.middleware.sessions.SessionMiddleware", "django.middleware.doc.XViewMiddleware", ) -ROOT_URLCONF = '{{ project_name }}.settings.urls.main' +ROOT_URLCONF = '{{ project_name }}.urls' TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates". diff --git a/django/conf/project_template/settings/__init__.py b/django/conf/project_template/settings/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 --- a/django/conf/project_template/settings/__init__.py +++ /dev/null diff --git a/django/conf/project_template/settings/admin.py b/django/conf/project_template/settings/admin.py deleted file mode 100644 index 603886a5f2..0000000000 --- a/django/conf/project_template/settings/admin.py +++ /dev/null @@ -1,18 +0,0 @@ -# Django settings for {{ project_name }} project admin site. - -from main import * - -TEMPLATE_DIRS = ( - # Put strings here, like "/home/html/django_templates". -) -ROOT_URLCONF = '{{ project_name }}.settings.urls.admin' -MIDDLEWARE_CLASSES = ( - 'django.middleware.sessions.SessionMiddleware', - 'django.middleware.admin.AdminUserRequired', - 'django.middleware.common.CommonMiddleware', -) - -# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a -# trailing slash. -# Examples: "http://foo.com/media/", "/media/". -ADMIN_MEDIA_PREFIX = '/media/' diff --git a/django/conf/project_template/settings/urls/__init__.py b/django/conf/project_template/settings/urls/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 --- a/django/conf/project_template/settings/urls/__init__.py +++ /dev/null diff --git a/django/conf/project_template/settings/urls/admin.py b/django/conf/project_template/settings/urls/admin.py deleted file mode 100644 index c3eb86d3cb..0000000000 --- a/django/conf/project_template/settings/urls/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.conf.urls.defaults import * - -urlpatterns = patterns('', - (r'^admin/', include('django.conf.urls.admin')), - (r'^r/', include('django.conf.urls.shortcut')), -) diff --git a/django/conf/project_template/settings/urls/main.py b/django/conf/project_template/urls.py index f9b993a52c..fe77ea1867 100644 --- a/django/conf/project_template/settings/urls/main.py +++ b/django/conf/project_template/urls.py @@ -3,4 +3,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('', # Example: # (r'^{{ project_name }}/', include('{{ project_name }}.apps.foo.urls.foo')), + + # Uncomment this for admin: +# (r'^admin/', include('django.contrib.admin.urls.admin')), ) diff --git a/django/conf/admin_media/css/base.css b/django/contrib/admin/media/css/base.css index d50e5d43f5..d50e5d43f5 100644 --- a/django/conf/admin_media/css/base.css +++ b/django/contrib/admin/media/css/base.css diff --git a/django/conf/admin_media/css/changelists.css b/django/contrib/admin/media/css/changelists.css index 7ff59c5e6b..7ff59c5e6b 100644 --- a/django/conf/admin_media/css/changelists.css +++ b/django/contrib/admin/media/css/changelists.css diff --git a/django/conf/admin_media/css/global.css b/django/contrib/admin/media/css/global.css index 453998c363..453998c363 100644 --- a/django/conf/admin_media/css/global.css +++ b/django/contrib/admin/media/css/global.css diff --git a/django/conf/admin_media/img/admin/arrow-down.gif b/django/contrib/admin/media/img/admin/arrow-down.gif Binary files differindex a967b9fd55..a967b9fd55 100644 --- a/django/conf/admin_media/img/admin/arrow-down.gif +++ b/django/contrib/admin/media/img/admin/arrow-down.gif diff --git a/django/conf/admin_media/img/admin/arrow-up.gif b/django/contrib/admin/media/img/admin/arrow-up.gif Binary files differindex 3fe4851399..3fe4851399 100644 --- a/django/conf/admin_media/img/admin/arrow-up.gif +++ b/django/contrib/admin/media/img/admin/arrow-up.gif diff --git a/django/conf/admin_media/img/admin/changelist-bg.gif b/django/contrib/admin/media/img/admin/changelist-bg.gif Binary files differindex 7f4699470a..7f4699470a 100644 --- a/django/conf/admin_media/img/admin/changelist-bg.gif +++ b/django/contrib/admin/media/img/admin/changelist-bg.gif diff --git a/django/conf/admin_media/img/admin/chooser-bg.gif b/django/contrib/admin/media/img/admin/chooser-bg.gif Binary files differindex 30e83c2518..30e83c2518 100644 --- a/django/conf/admin_media/img/admin/chooser-bg.gif +++ b/django/contrib/admin/media/img/admin/chooser-bg.gif diff --git a/django/conf/admin_media/img/admin/chooser_stacked-bg.gif b/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif Binary files differindex 5d104b6d98..5d104b6d98 100644 --- a/django/conf/admin_media/img/admin/chooser_stacked-bg.gif +++ b/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif diff --git a/django/conf/admin_media/img/admin/default-bg-reverse.gif b/django/contrib/admin/media/img/admin/default-bg-reverse.gif Binary files differindex 0873281e51..0873281e51 100644 --- a/django/conf/admin_media/img/admin/default-bg-reverse.gif +++ b/django/contrib/admin/media/img/admin/default-bg-reverse.gif diff --git a/django/conf/admin_media/img/admin/default-bg.gif b/django/contrib/admin/media/img/admin/default-bg.gif Binary files differindex 003aeca59f..003aeca59f 100644 --- a/django/conf/admin_media/img/admin/default-bg.gif +++ b/django/contrib/admin/media/img/admin/default-bg.gif diff --git a/django/conf/admin_media/img/admin/icon-no.gif b/django/contrib/admin/media/img/admin/icon-no.gif Binary files differindex 1b4ee58145..1b4ee58145 100644 --- a/django/conf/admin_media/img/admin/icon-no.gif +++ b/django/contrib/admin/media/img/admin/icon-no.gif diff --git a/django/conf/admin_media/img/admin/icon-yes.gif b/django/contrib/admin/media/img/admin/icon-yes.gif Binary files differindex 7399282740..7399282740 100644 --- a/django/conf/admin_media/img/admin/icon-yes.gif +++ b/django/contrib/admin/media/img/admin/icon-yes.gif diff --git a/django/conf/admin_media/img/admin/icon_addlink.gif b/django/contrib/admin/media/img/admin/icon_addlink.gif Binary files differindex ee70e1adba..ee70e1adba 100644 --- a/django/conf/admin_media/img/admin/icon_addlink.gif +++ b/django/contrib/admin/media/img/admin/icon_addlink.gif diff --git a/django/conf/admin_media/img/admin/icon_alert.gif b/django/contrib/admin/media/img/admin/icon_alert.gif Binary files differindex a1dde26254..a1dde26254 100644 --- a/django/conf/admin_media/img/admin/icon_alert.gif +++ b/django/contrib/admin/media/img/admin/icon_alert.gif diff --git a/django/conf/admin_media/img/admin/icon_calendar.gif b/django/contrib/admin/media/img/admin/icon_calendar.gif Binary files differindex 7587b305a4..7587b305a4 100644 --- a/django/conf/admin_media/img/admin/icon_calendar.gif +++ b/django/contrib/admin/media/img/admin/icon_calendar.gif diff --git a/django/conf/admin_media/img/admin/icon_changelink.gif b/django/contrib/admin/media/img/admin/icon_changelink.gif Binary files differindex e1b9afde65..e1b9afde65 100644 --- a/django/conf/admin_media/img/admin/icon_changelink.gif +++ b/django/contrib/admin/media/img/admin/icon_changelink.gif diff --git a/django/conf/admin_media/img/admin/icon_clock.gif b/django/contrib/admin/media/img/admin/icon_clock.gif Binary files differindex ff2d57e0a3..ff2d57e0a3 100644 --- a/django/conf/admin_media/img/admin/icon_clock.gif +++ b/django/contrib/admin/media/img/admin/icon_clock.gif diff --git a/django/conf/admin_media/img/admin/icon_deletelink.gif b/django/contrib/admin/media/img/admin/icon_deletelink.gif Binary files differindex 72523e3a3b..72523e3a3b 100644 --- a/django/conf/admin_media/img/admin/icon_deletelink.gif +++ b/django/contrib/admin/media/img/admin/icon_deletelink.gif diff --git a/django/conf/admin_media/img/admin/icon_error.gif b/django/contrib/admin/media/img/admin/icon_error.gif Binary files differindex 3730a00b26..3730a00b26 100644 --- a/django/conf/admin_media/img/admin/icon_error.gif +++ b/django/contrib/admin/media/img/admin/icon_error.gif diff --git a/django/conf/admin_media/img/admin/icon_searchbox.png b/django/contrib/admin/media/img/admin/icon_searchbox.png Binary files differindex 8ab579e526..8ab579e526 100644 --- a/django/conf/admin_media/img/admin/icon_searchbox.png +++ b/django/contrib/admin/media/img/admin/icon_searchbox.png diff --git a/django/conf/admin_media/img/admin/icon_success.gif b/django/contrib/admin/media/img/admin/icon_success.gif Binary files differindex 5cf90a15aa..5cf90a15aa 100644 --- a/django/conf/admin_media/img/admin/icon_success.gif +++ b/django/contrib/admin/media/img/admin/icon_success.gif diff --git a/django/conf/admin_media/img/admin/nav-bg-grabber.gif b/django/contrib/admin/media/img/admin/nav-bg-grabber.gif Binary files differindex 0a784fa769..0a784fa769 100644 --- a/django/conf/admin_media/img/admin/nav-bg-grabber.gif +++ b/django/contrib/admin/media/img/admin/nav-bg-grabber.gif diff --git a/django/conf/admin_media/img/admin/nav-bg-reverse.gif b/django/contrib/admin/media/img/admin/nav-bg-reverse.gif Binary files differindex f11029f90f..f11029f90f 100644 --- a/django/conf/admin_media/img/admin/nav-bg-reverse.gif +++ b/django/contrib/admin/media/img/admin/nav-bg-reverse.gif diff --git a/django/conf/admin_media/img/admin/nav-bg.gif b/django/contrib/admin/media/img/admin/nav-bg.gif Binary files differindex f8402b809d..f8402b809d 100644 --- a/django/conf/admin_media/img/admin/nav-bg.gif +++ b/django/contrib/admin/media/img/admin/nav-bg.gif diff --git a/django/conf/admin_media/img/admin/selector-add.gif b/django/contrib/admin/media/img/admin/selector-add.gif Binary files differindex 50132d1c43..50132d1c43 100644 --- a/django/conf/admin_media/img/admin/selector-add.gif +++ b/django/contrib/admin/media/img/admin/selector-add.gif diff --git a/django/conf/admin_media/img/admin/selector-addall.gif b/django/contrib/admin/media/img/admin/selector-addall.gif Binary files differindex d6e7c639bb..d6e7c639bb 100644 --- a/django/conf/admin_media/img/admin/selector-addall.gif +++ b/django/contrib/admin/media/img/admin/selector-addall.gif diff --git a/django/conf/admin_media/img/admin/selector-remove.gif b/django/contrib/admin/media/img/admin/selector-remove.gif Binary files differindex 2b9b0a2ac3..2b9b0a2ac3 100644 --- a/django/conf/admin_media/img/admin/selector-remove.gif +++ b/django/contrib/admin/media/img/admin/selector-remove.gif diff --git a/django/conf/admin_media/img/admin/selector-removeall.gif b/django/contrib/admin/media/img/admin/selector-removeall.gif Binary files differindex 5a4421926d..5a4421926d 100644 --- a/django/conf/admin_media/img/admin/selector-removeall.gif +++ b/django/contrib/admin/media/img/admin/selector-removeall.gif diff --git a/django/conf/admin_media/img/admin/selector-search.gif b/django/contrib/admin/media/img/admin/selector-search.gif Binary files differindex 6d5f4c7492..6d5f4c7492 100644 --- a/django/conf/admin_media/img/admin/selector-search.gif +++ b/django/contrib/admin/media/img/admin/selector-search.gif diff --git a/django/conf/admin_media/img/admin/selector_stacked-add.gif b/django/contrib/admin/media/img/admin/selector_stacked-add.gif Binary files differindex 7426169652..7426169652 100644 --- a/django/conf/admin_media/img/admin/selector_stacked-add.gif +++ b/django/contrib/admin/media/img/admin/selector_stacked-add.gif diff --git a/django/conf/admin_media/img/admin/selector_stacked-remove.gif b/django/contrib/admin/media/img/admin/selector_stacked-remove.gif Binary files differindex 60412cee19..60412cee19 100644 --- a/django/conf/admin_media/img/admin/selector_stacked-remove.gif +++ b/django/contrib/admin/media/img/admin/selector_stacked-remove.gif diff --git a/django/conf/admin_media/img/admin/tool-left.gif b/django/contrib/admin/media/img/admin/tool-left.gif Binary files differindex 011490ff3a..011490ff3a 100644 --- a/django/conf/admin_media/img/admin/tool-left.gif +++ b/django/contrib/admin/media/img/admin/tool-left.gif diff --git a/django/conf/admin_media/img/admin/tool-left_over.gif b/django/contrib/admin/media/img/admin/tool-left_over.gif Binary files differindex 937e07bb1a..937e07bb1a 100644 --- a/django/conf/admin_media/img/admin/tool-left_over.gif +++ b/django/contrib/admin/media/img/admin/tool-left_over.gif diff --git a/django/conf/admin_media/img/admin/tool-right.gif b/django/contrib/admin/media/img/admin/tool-right.gif Binary files differindex cdc140cc59..cdc140cc59 100644 --- a/django/conf/admin_media/img/admin/tool-right.gif +++ b/django/contrib/admin/media/img/admin/tool-right.gif diff --git a/django/conf/admin_media/img/admin/tool-right_over.gif b/django/contrib/admin/media/img/admin/tool-right_over.gif Binary files differindex 4db977e838..4db977e838 100644 --- a/django/conf/admin_media/img/admin/tool-right_over.gif +++ b/django/contrib/admin/media/img/admin/tool-right_over.gif diff --git a/django/conf/admin_media/img/admin/tooltag-add.gif b/django/contrib/admin/media/img/admin/tooltag-add.gif Binary files differindex 8b53d49ae5..8b53d49ae5 100644 --- a/django/conf/admin_media/img/admin/tooltag-add.gif +++ b/django/contrib/admin/media/img/admin/tooltag-add.gif diff --git a/django/conf/admin_media/img/admin/tooltag-add_over.gif b/django/contrib/admin/media/img/admin/tooltag-add_over.gif Binary files differindex bfc52f10de..bfc52f10de 100644 --- a/django/conf/admin_media/img/admin/tooltag-add_over.gif +++ b/django/contrib/admin/media/img/admin/tooltag-add_over.gif diff --git a/django/conf/admin_media/img/admin/tooltag-arrowright.gif b/django/contrib/admin/media/img/admin/tooltag-arrowright.gif Binary files differindex cdaaae77ed..cdaaae77ed 100644 --- a/django/conf/admin_media/img/admin/tooltag-arrowright.gif +++ b/django/contrib/admin/media/img/admin/tooltag-arrowright.gif diff --git a/django/conf/admin_media/img/admin/tooltag-arrowright_over.gif b/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif Binary files differindex 7163189604..7163189604 100644 --- a/django/conf/admin_media/img/admin/tooltag-arrowright_over.gif +++ b/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif diff --git a/django/conf/admin_media/js/SelectBox.js b/django/contrib/admin/media/js/SelectBox.js index af8de204cb..af8de204cb 100644 --- a/django/conf/admin_media/js/SelectBox.js +++ b/django/contrib/admin/media/js/SelectBox.js diff --git a/django/conf/admin_media/js/SelectFilter.js b/django/contrib/admin/media/js/SelectFilter.js index 0501920608..0501920608 100644 --- a/django/conf/admin_media/js/SelectFilter.js +++ b/django/contrib/admin/media/js/SelectFilter.js diff --git a/django/conf/admin_media/js/SelectFilter2.js b/django/contrib/admin/media/js/SelectFilter2.js index 380ae72c91..380ae72c91 100644 --- a/django/conf/admin_media/js/SelectFilter2.js +++ b/django/contrib/admin/media/js/SelectFilter2.js diff --git a/django/conf/admin_media/js/admin/CollapsedFieldsets.js b/django/contrib/admin/media/js/admin/CollapsedFieldsets.js index 0b3ad9e421..0b3ad9e421 100644 --- a/django/conf/admin_media/js/admin/CollapsedFieldsets.js +++ b/django/contrib/admin/media/js/admin/CollapsedFieldsets.js diff --git a/django/conf/admin_media/js/admin/DateTimeShortcuts.js b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js index 5da6f2f48e..5da6f2f48e 100644 --- a/django/conf/admin_media/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js diff --git a/django/conf/admin_media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js index 3788e048b2..3788e048b2 100644 --- a/django/conf/admin_media/js/admin/RelatedObjectLookups.js +++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js diff --git a/django/conf/admin_media/js/admin/ordering.js b/django/contrib/admin/media/js/admin/ordering.js index fb0f5b007e..fb0f5b007e 100644 --- a/django/conf/admin_media/js/admin/ordering.js +++ b/django/contrib/admin/media/js/admin/ordering.js diff --git a/django/conf/admin_media/js/calendar.js b/django/contrib/admin/media/js/calendar.js index ad1f0a9734..ad1f0a9734 100644 --- a/django/conf/admin_media/js/calendar.js +++ b/django/contrib/admin/media/js/calendar.js diff --git a/django/conf/admin_media/js/core.js b/django/contrib/admin/media/js/core.js index 62d74211de..62d74211de 100644 --- a/django/conf/admin_media/js/core.js +++ b/django/contrib/admin/media/js/core.js diff --git a/django/conf/admin_media/js/dateparse.js b/django/contrib/admin/media/js/dateparse.js index cec36e41e0..cec36e41e0 100644 --- a/django/conf/admin_media/js/dateparse.js +++ b/django/contrib/admin/media/js/dateparse.js diff --git a/django/conf/admin_media/js/getElementsBySelector.js b/django/contrib/admin/media/js/getElementsBySelector.js index ae6d387a91..ae6d387a91 100644 --- a/django/conf/admin_media/js/getElementsBySelector.js +++ b/django/contrib/admin/media/js/getElementsBySelector.js diff --git a/django/conf/admin_media/js/timeparse.js b/django/contrib/admin/media/js/timeparse.js index 882f41d56e..882f41d56e 100644 --- a/django/conf/admin_media/js/timeparse.js +++ b/django/contrib/admin/media/js/timeparse.js diff --git a/django/conf/admin_media/js/urlify.js b/django/contrib/admin/media/js/urlify.js index 412130ad6f..412130ad6f 100644 --- a/django/conf/admin_media/js/urlify.js +++ b/django/contrib/admin/media/js/urlify.js diff --git a/django/conf/admin_templates/404.html b/django/contrib/admin/templates/admin/404.html index 099466c4f1..9d7876ecbf 100644 --- a/django/conf/admin_templates/404.html +++ b/django/contrib/admin/templates/admin/404.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block title %}Page not found{% endblock %} diff --git a/django/conf/admin_templates/500.html b/django/contrib/admin/templates/admin/500.html index 124e4018a9..34a28ff0f5 100644 --- a/django/conf/admin_templates/500.html +++ b/django/contrib/admin/templates/admin/500.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="/">Home</a> › Server error</div>{% endblock %} diff --git a/django/conf/admin_templates/base.html b/django/contrib/admin/templates/admin/base.html index 64c80b934c..64c80b934c 100644 --- a/django/conf/admin_templates/base.html +++ b/django/contrib/admin/templates/admin/base.html diff --git a/django/conf/admin_templates/base_site.html b/django/contrib/admin/templates/admin/base_site.html index 8e0874e401..7113c06d6c 100644 --- a/django/conf/admin_templates/base_site.html +++ b/django/contrib/admin/templates/admin/base_site.html @@ -1,4 +1,4 @@ -{% extends "base" %} +{% extends "admin/base" %} {% block title %}{{ title }} | Django site admin{% endblock %} diff --git a/django/conf/admin_templates/delete_confirmation_generic.html b/django/contrib/admin/templates/admin/delete_confirmation.html index e46b611baf..99b1cdce7a 100644 --- a/django/conf/admin_templates/delete_confirmation_generic.html +++ b/django/contrib/admin/templates/admin/delete_confirmation.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block content %} diff --git a/django/conf/admin_templates/index.html b/django/contrib/admin/templates/admin/index.html index 7610b3a023..02c5bd8439 100644 --- a/django/conf/admin_templates/index.html +++ b/django/contrib/admin/templates/admin/index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block coltype %}colMS{% endblock %} {% block bodyclass %}dashboard{% endblock %} diff --git a/django/conf/admin_templates/login.html b/django/contrib/admin/templates/admin/login.html index 7dec8e796a..ef4aa5aae2 100644 --- a/django/conf/admin_templates/login.html +++ b/django/contrib/admin/templates/admin/login.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}{% endblock %} diff --git a/django/conf/admin_templates/admin_object_history.html b/django/contrib/admin/templates/admin/object_history.html index 580d47760f..d50936665a 100644 --- a/django/conf/admin_templates/admin_object_history.html +++ b/django/contrib/admin/templates/admin/object_history.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %} <div class="breadcrumbs"><a href="../../../../">Home</a> › <a href="../../">{{ module_name }}</a> › <a href="../">{{ object|truncatewords:"18" }}</a> › History</div> diff --git a/django/conf/admin_templates/template_validator.html b/django/contrib/admin/templates/admin/template_validator.html index ddd9775f9f..f9ac09a77d 100644 --- a/django/conf/admin_templates/template_validator.html +++ b/django/contrib/admin/templates/admin/template_validator.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block content %} diff --git a/django/conf/admin_templates/doc/bookmarklets.html b/django/contrib/admin/templates/admin_doc/bookmarklets.html index 9c64d32837..d396ec53b5 100644 --- a/django/conf/admin_templates/doc/bookmarklets.html +++ b/django/contrib/admin/templates/admin_doc/bookmarklets.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> › <a href="../">Documentation</a> › Bookmarklets</div>{% endblock %} diff --git a/django/conf/admin_templates/doc/index.html b/django/contrib/admin/templates/admin_doc/index.html index e205d0a486..77d2a96bf2 100644 --- a/django/conf/admin_templates/doc/index.html +++ b/django/contrib/admin/templates/admin_doc/index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Documentation</div>{% endblock %}
diff --git a/django/conf/admin_templates/doc/missing_docutils.html b/django/contrib/admin/templates/admin_doc/missing_docutils.html index 2a47be26be..40004c41ab 100644 --- a/django/conf/admin_templates/doc/missing_docutils.html +++ b/django/contrib/admin/templates/admin_doc/missing_docutils.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Documentation</div>{% endblock %} diff --git a/django/conf/admin_templates/doc/model_detail.html b/django/contrib/admin/templates/admin_doc/model_detail.html index bd58d2a9f1..d3621b7434 100644 --- a/django/conf/admin_templates/doc/model_detail.html +++ b/django/contrib/admin/templates/admin_doc/model_detail.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block extrahead %} diff --git a/django/conf/admin_templates/doc/model_index.html b/django/contrib/admin/templates/admin_doc/model_index.html index c1554c0911..5896ee136e 100644 --- a/django/conf/admin_templates/doc/model_index.html +++ b/django/contrib/admin/templates/admin_doc/model_index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block coltype %}colSM{% endblock %} diff --git a/django/conf/admin_templates/doc/template_detail.html b/django/contrib/admin/templates/admin_doc/template_detail.html index 374b737022..448ff212ba 100644 --- a/django/conf/admin_templates/doc/template_detail.html +++ b/django/contrib/admin/templates/admin_doc/template_detail.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> › <a href="../../">Documentation</a> › Templates › {{ name }}</div>{% endblock %} diff --git a/django/conf/admin_templates/doc/template_filter_index.html b/django/contrib/admin/templates/admin_doc/template_filter_index.html index 0dc651a214..23f0862457 100644 --- a/django/conf/admin_templates/doc/template_filter_index.html +++ b/django/contrib/admin/templates/admin_doc/template_filter_index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block coltype %}colSM{% endblock %} diff --git a/django/conf/admin_templates/doc/template_tag_index.html b/django/contrib/admin/templates/admin_doc/template_tag_index.html index 52ab08756a..83b2572322 100644 --- a/django/conf/admin_templates/doc/template_tag_index.html +++ b/django/contrib/admin/templates/admin_doc/template_tag_index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block coltype %}colSM{% endblock %} diff --git a/django/conf/admin_templates/doc/view_detail.html b/django/contrib/admin/templates/admin_doc/view_detail.html index 3fe26b3488..9fb06e7eb7 100644 --- a/django/conf/admin_templates/doc/view_detail.html +++ b/django/contrib/admin/templates/admin_doc/view_detail.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> › <a href="../../">Documentation</a> › <a href="../">Views</a> › {{ name }}</div>{% endblock %} diff --git a/django/conf/admin_templates/doc/view_index.html b/django/contrib/admin/templates/admin_doc/view_index.html index c14b1f07ac..90ef5b1c90 100644 --- a/django/conf/admin_templates/doc/view_index.html +++ b/django/contrib/admin/templates/admin_doc/view_index.html @@ -1,4 +1,4 @@ -{% extends "base_site" %}
+{% extends "admin/base_site" %}
{% block coltype %}colSM{% endblock %}
diff --git a/django/conf/admin_templates/registration/logged_out.html b/django/contrib/admin/templates/registration/logged_out.html index 92cf77e35b..1f4bd29790 100644 --- a/django/conf/admin_templates/registration/logged_out.html +++ b/django/contrib/admin/templates/registration/logged_out.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a></div>{% endblock %} diff --git a/django/conf/admin_templates/registration/password_change_done.html b/django/contrib/admin/templates/registration/password_change_done.html index 8028c9f0d9..4345b9bcaa 100644 --- a/django/conf/admin_templates/registration/password_change_done.html +++ b/django/contrib/admin/templates/registration/password_change_done.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Password change</div>{% endblock %} diff --git a/django/conf/admin_templates/registration/password_change_form.html b/django/contrib/admin/templates/registration/password_change_form.html index 8ceefed86e..104249991c 100644 --- a/django/conf/admin_templates/registration/password_change_form.html +++ b/django/contrib/admin/templates/registration/password_change_form.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Password change</div>{% endblock %} diff --git a/django/conf/admin_templates/registration/password_reset_done.html b/django/contrib/admin/templates/registration/password_reset_done.html index 5c41d9f1d5..a8573e8e0e 100644 --- a/django/conf/admin_templates/registration/password_reset_done.html +++ b/django/contrib/admin/templates/registration/password_reset_done.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Password reset</div>{% endblock %} diff --git a/django/conf/admin_templates/registration/password_reset_email.html b/django/contrib/admin/templates/registration/password_reset_email.html index 4a5bb920d6..4a5bb920d6 100644 --- a/django/conf/admin_templates/registration/password_reset_email.html +++ b/django/contrib/admin/templates/registration/password_reset_email.html diff --git a/django/conf/admin_templates/registration/password_reset_form.html b/django/contrib/admin/templates/registration/password_reset_form.html index c2dae2a5b3..4f9bcb5fc5 100644 --- a/django/conf/admin_templates/registration/password_reset_form.html +++ b/django/contrib/admin/templates/registration/password_reset_form.html @@ -1,4 +1,4 @@ -{% extends "base_site" %} +{% extends "admin/base_site" %} {% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> › Password reset</div>{% endblock %} diff --git a/django/templatetags/adminapplist.py b/django/contrib/admin/templatetags/adminapplist.py index 92e1bd3ccb..92e1bd3ccb 100644 --- a/django/templatetags/adminapplist.py +++ b/django/contrib/admin/templatetags/adminapplist.py diff --git a/django/templatetags/adminmedia.py b/django/contrib/admin/templatetags/adminmedia.py index 2b18252d7d..2b18252d7d 100644 --- a/django/templatetags/adminmedia.py +++ b/django/contrib/admin/templatetags/adminmedia.py diff --git a/django/templatetags/log.py b/django/contrib/admin/templatetags/log.py index c88e28dabe..b24f7c1dad 100644 --- a/django/templatetags/log.py +++ b/django/contrib/admin/templatetags/log.py @@ -1,4 +1,4 @@ -from django.models.auth import log +from django.models.admin import log from django.core import template class AdminLogNode(template.Node): diff --git a/django/conf/urls/admin.py b/django/contrib/admin/urls/admin.py index d03b88ceb4..d03b88ceb4 100644 --- a/django/conf/urls/admin.py +++ b/django/contrib/admin/urls/admin.py diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 685f3b6cba..8ecf0a2c97 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -6,7 +6,7 @@ from django.core.template import loader from django.core.exceptions import Http404, ObjectDoesNotExist, PermissionDenied from django.core.extensions import DjangoContext as Context from django.core.extensions import get_object_or_404, render_to_response -from django.models.auth import log +from django.models.admin import log from django.utils.html import strip_tags from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect from django.utils.text import capfirst, get_text_list @@ -49,7 +49,7 @@ def get_query_string(original_params, new_params={}, remove=[]): return '?' + '&'.join(['%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20') def index(request): - return render_to_response('index', {'title': 'Site administration'}, context_instance=Context(request)) + return render_to_response('admin/index', {'title': 'Site administration'}, context_instance=Context(request)) index = staff_member_required(index) def change_list(request, app_label, module_name): @@ -266,7 +266,7 @@ def change_list(request, app_label, module_name): else: pass # Invalid argument to "list_filter" - raw_template = ['{% extends "base_site" %}\n'] + raw_template = ['{% extends "admin/base_site" %}\n'] raw_template.append('{% block bodyclass %}change-list{% endblock %}\n') if not is_popup: raw_template.append('{%% block breadcrumbs %%}<div class="breadcrumbs"><a href="../../">Home</a> › %s</div>{%% endblock %%}\n' % capfirst(opts.verbose_name_plural)) @@ -538,7 +538,7 @@ def _get_template(opts, app_label, add=False, change=False, show_delete=False, f admin_field_objs = opts.admin.get_field_objs(opts) ordered_objects = opts.get_ordered_objects()[:] auto_populated_fields = [f for f in opts.fields if f.prepopulate_from] - t = ['{% extends "base_site" %}\n'] + t = ['{% extends "admin/base_site" %}\n'] t.append('{% block extrahead %}') # Put in any necessary JavaScript imports. @@ -1087,7 +1087,7 @@ def delete_stage(request, app_label, module_name, object_id): log.log_action(request.user.id, opts.get_content_type_id(), object_id, obj_repr, log.DELETION) request.user.add_message('The %s "%s" was deleted successfully.' % (opts.verbose_name, obj_repr)) return HttpResponseRedirect("../../") - return render_to_response('delete_confirmation_generic', { + return render_to_response('admin/delete_confirmation', { "title": "Are you sure?", "object_name": opts.verbose_name, "object": obj, @@ -1102,7 +1102,7 @@ def history(request, app_label, module_name, object_id): order_by=("action_time",), select_related=True) # If no history was found, see whether this object even exists. obj = get_object_or_404(mod, pk=object_id) - return render_to_response('admin_object_history', { + return render_to_response('admin/object_history', { 'title': 'Change history: %r' % obj, 'action_list': action_list, 'module_name': capfirst(opts.verbose_name_plural), diff --git a/django/contrib/admin/views/template.py b/django/contrib/admin/views/template.py index 97f67e04c1..fbac6d4f12 100644 --- a/django/contrib/admin/views/template.py +++ b/django/contrib/admin/views/template.py @@ -23,7 +23,7 @@ def template_validator(request): errors = manipulator.get_validation_errors(new_data) if not errors: request.user.add_message('The template is valid.') - return render_to_response('template_validator', { + return render_to_response('admin/template_validator', { 'title': 'Template validator', 'form': formfields.FormWrapper(manipulator, new_data, errors), }, context_instance=DjangoContext(request)) diff --git a/django/core/management.py b/django/core/management.py index 046031e311..564697776d 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -17,7 +17,6 @@ APP_ARGS = '[modelmodule ...]' # Use django.__path__[0] because we don't know which directory django into # which has been installed. PROJECT_TEMPLATE_DIR = os.path.join(django.__path__[0], 'conf', '%s_template') -ADMIN_TEMPLATE_DIR = os.path.join(django.__path__[0], 'conf', 'admin_templates') def _get_packages_insert(app_label): return "INSERT INTO packages (label, name) VALUES ('%s', '%s');" % (app_label, app_label) @@ -142,7 +141,7 @@ def get_sql_delete(mod): if cursor is not None: cursor.execute("SELECT id FROM content_types WHERE package = %s", [app_label]) for row in cursor.fetchall(): - output.append("DELETE FROM auth_admin_log WHERE content_type_id = %s;" % row[0]) + output.append("DELETE FROM django_admin_log WHERE content_type_id = %s;" % row[0]) # Close database connection explicitly, in case this output is being piped # directly into a database client, to avoid locking issues. @@ -378,16 +377,8 @@ def startproject(project_name, directory): "Creates a Django project for the given project_name in the given directory." from random import choice _start_helper('project', project_name, directory) - # Populate TEMPLATE_DIRS for the admin templates, based on where Django is - # installed. - admin_settings_file = os.path.join(directory, project_name, 'settings', 'admin.py') - settings_contents = open(admin_settings_file, 'r').read() - fp = open(admin_settings_file, 'w') - settings_contents = re.sub(r'(?s)\b(TEMPLATE_DIRS\s*=\s*\()(.*?)\)', "\\1\n r%r,\\2)" % ADMIN_TEMPLATE_DIR, settings_contents) - fp.write(settings_contents) - fp.close() # Create a random SECRET_KEY hash, and put it in the main settings. - main_settings_file = os.path.join(directory, project_name, 'settings', 'main.py') + main_settings_file = os.path.join(directory, project_name, 'settings.py') settings_contents = open(main_settings_file, 'r').read() fp = open(main_settings_file, 'w') secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)]) diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py index e7d6b98032..2cb5471fe5 100644 --- a/django/core/servers/basehttp.py +++ b/django/core/servers/basehttp.py @@ -602,7 +602,7 @@ class AdminMediaHandler: from django.conf import settings import django self.application = application - self.media_dir = django.__path__[0] + '/conf/admin_media' + self.media_dir = django.__path__[0] + '/contrib/admin/media' self.media_url = settings.ADMIN_MEDIA_PREFIX def __call__(self, environ, start_response): diff --git a/django/middleware/admin.py b/django/middleware/admin.py deleted file mode 100644 index 9c20cfc31c..0000000000 --- a/django/middleware/admin.py +++ /dev/null @@ -1,126 +0,0 @@ -from django.utils import httpwrappers -from django.core.extensions import DjangoContext -from django.core.extensions import render_to_response -from django.models.auth import users -from django.views.registration import passwords -from django.views.auth.login import logout -import base64, md5 -import cPickle as pickle -from django.conf.settings import SECRET_KEY - -ERROR_MESSAGE = "Please enter a correct username and password. Note that both fields are case-sensitive." - -class AdminUserRequired: - """ - Admin middleware. If this is enabled, access to the site will be granted only - to valid users with the "is_staff" flag set. - """ - - def process_view(self, request, view_func, param_dict): - """ - Make sure the user is logged in and is a valid admin user before - allowing any access. - - Done at the view point because we need to know if we're running the - password reset function. - """ - - # If this is the password reset view, we don't want to require login - # Otherwise the password reset would need its own entry in the httpd - # conf, which is a little uglier than this. Same goes for the logout - # view. - - if view_func in (passwords.password_reset, passwords.password_reset_done, logout): - return - - assert hasattr(request, 'session'), "The admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.middleware.sessions.SessionMiddleware' before %r." % self.__class__.__name__ - - # Check for a logged in, valid user - if self.user_is_valid(request.user): - return - - # If this isn't already the login page, display it - if not request.POST.has_key('this_is_the_login_form'): - if request.POST: - message = "Please log in again, because your session has expired. "\ - "Don't worry: Your submission has been saved." - else: - message = "" - return self.display_login_form(request, message) - - # Check that the user accepts cookies. - if not request.session.test_cookie_worked(): - message = "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." - return self.display_login_form(request, message) - - # Check the password - username = request.POST.get('username', '') - try: - user = users.get_object(username__exact=username) - except users.UserDoesNotExist: - message = ERROR_MESSAGE - if '@' in username: - # Mistakenly entered e-mail address instead of username? Look it up. - try: - user = users.get_object(email__exact=username) - except users.UserDoesNotExist: - message = "Usernames cannot contain the '@' character." - else: - message = "Your e-mail address is not your username. Try '%s' instead." % user.username - return self.display_login_form(request, message) - - # The user data is correct; log in the user in and continue - else: - if self.authenticate_user(user, request.POST.get('password', '')): - request.session[users.SESSION_KEY] = user.id - if request.POST.has_key('post_data'): - post_data = decode_post_data(request.POST['post_data']) - if post_data and not post_data.has_key('this_is_the_login_form'): - # overwrite request.POST with the saved post_data, and continue - request.POST = post_data - request.user = user - return - else: - request.session.delete_test_cookie() - return httpwrappers.HttpResponseRedirect(request.path) - else: - return self.display_login_form(request, ERROR_MESSAGE) - - def display_login_form(self, request, error_message=''): - request.session.set_test_cookie() - if request.POST and request.POST.has_key('post_data'): - # User has failed login BUT has previously saved 'post_data' - post_data = request.POST['post_data'] - elif request.POST: - # User's session must have expired; save their post data - post_data = encode_post_data(request.POST) - else: - post_data = encode_post_data({}) - return render_to_response(self.get_login_template_name(), { - 'title': 'Log in', - 'app_path': request.path, - 'post_data': post_data, - 'error_message': error_message - }, context_instance=DjangoContext(request)) - - def authenticate_user(self, user, password): - return user.check_password(password) and user.is_staff - - def user_is_valid(self, user): - return not user.is_anonymous() and user.is_staff - - def get_login_template_name(self): - return "login" - -def encode_post_data(post_data): - pickled = pickle.dumps(post_data) - pickled_md5 = md5.new(pickled + SECRET_KEY).hexdigest() - return base64.encodestring(pickled + pickled_md5) - -def decode_post_data(encoded_data): - encoded_data = base64.decodestring(encoded_data) - pickled, tamper_check = encoded_data[:-32], encoded_data[-32:] - if md5.new(pickled + SECRET_KEY).hexdigest() != tamper_check: - from django.core.exceptions import SuspiciousOperation - raise SuspiciousOperation, "User may have tampered with session cookie." - return pickle.loads(pickled) diff --git a/django/models/auth.py b/django/models/auth.py index 20d846157e..2a65290085 100644 --- a/django/models/auth.py +++ b/django/models/auth.py @@ -176,49 +176,3 @@ class Message(meta.Model): def __repr__(self): return self.message - -class LogEntry(meta.Model): - action_time = meta.DateTimeField(auto_now=True) - user = meta.ForeignKey(User) - content_type = meta.ForeignKey(core.ContentType, blank=True, null=True) - object_id = meta.TextField(blank=True, null=True) - object_repr = meta.CharField(maxlength=200) - action_flag = meta.PositiveSmallIntegerField() - change_message = meta.TextField(blank=True) - class META: - module_name = 'log' - verbose_name_plural = 'log entries' - db_table = 'auth_admin_log' - ordering = ('-action_time',) - module_constants = { - 'ADDITION': 1, - 'CHANGE': 2, - 'DELETION': 3, - } - - def __repr__(self): - return str(self.action_time) - - def is_addition(self): - return self.action_flag == ADDITION - - def is_change(self): - return self.action_flag == CHANGE - - def is_deletion(self): - return self.action_flag == DELETION - - def get_edited_object(self): - "Returns the edited object represented by this log entry" - return self.get_content_type().get_object_for_this_type(pk=self.object_id) - - def get_admin_url(self): - """ - Returns the admin URL to edit the object represented by this log entry. - This is relative to the Django admin index page. - """ - return "%s/%s/%s/" % (self.get_content_type().package, self.get_content_type().python_module_name, self.object_id) - - def _module_log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''): - e = LogEntry(None, None, user_id, content_type_id, object_id, object_repr[:200], action_flag, change_message) - e.save() diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 0faabbfcca..ad7ee9d137 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -192,10 +192,10 @@ Available options Example usage:: - django-admin.py init --settings='myproject.settings.main' + django-admin.py init --settings=myproject.settings Explicitly specifies the settings module to use. The settings module should be -in Python path syntax, e.g. "myproject.settings.main". If this isn't provided, +in Python path syntax, e.g. "myproject.settings". If this isn't provided, ``django-admin.py`` will use the DJANGO_SETTINGS_MODULE environment variable. --pythonpath diff --git a/docs/faq.txt b/docs/faq.txt index 712f7b26a8..062bce730b 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -348,8 +348,7 @@ things: * Set the ``SESSION_COOKIE_DOMAIN`` setting in your admin config file to match your domain. For example, if you're going to "http://www.mysite.com/admin/" in your browser, in - "myproject.settings.admin" you should set ``SESSION_COOKIE_DOMAIN = - 'www.mysite.com'``. + "myproject.settings" you should set ``SESSION_COOKIE_DOMAIN = 'www.mysite.com'``. * Some browsers (Firefox?) don't like to accept cookies from domains that don't have dots in them. If you're running the admin site on "localhost" diff --git a/docs/middleware.txt b/docs/middleware.txt index 33cb1a38e4..d920e88370 100644 --- a/docs/middleware.txt +++ b/docs/middleware.txt @@ -27,30 +27,15 @@ name. For example, here's the default ``MIDDLEWARE_CLASSES`` created by "django.middleware.doc.XViewMiddleware", ) -The default admin site has the following ``MIDDLEWARE_CLASSES`` set:: - - MIDDLEWARE_CLASSES = ( - "django.middleware.sessions.SessionMiddleware", - "django.middleware.admin.AdminUserRequired", - "django.middleware.common.CommonMiddleware", - ) - Django applies middleware in the order it's defined in ``MIDDLEWARE_CLASSES``. -For a regular (i.e., non-admin) Django installation, no middleware is required, -but it's strongly suggested that you use ``CommonMiddleware``. For a Django -admin site, ``SessionMiddleware`` and ``AdminUserRequired`` (in that order) are -required. +A Django installation doesn't require any middleware -- e.g., +``MIDDLEWARE_CLASSES`` can be empty, if you'd like -- but it's strongly +suggested that you use ``CommonMiddleware``. Available middleware ==================== -django.middleware.admin.AdminUserRequired ------------------------------------------ - -Limits site access to valid users with the ``is_staff`` flag set. This is -required by Django's admin, and this middleware requires ``SessionMiddleware``. - django.middleware.cache.CacheMiddleware --------------------------------------- diff --git a/docs/modpython.txt b/docs/modpython.txt index d24ea29018..13377ad2dd 100644 --- a/docs/modpython.txt +++ b/docs/modpython.txt @@ -25,12 +25,11 @@ Then edit your ``httpd.conf`` file and add the following:: <Location "/mysite/"> SetHandler python-program PythonHandler django.core.handlers.modpython - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.main + SetEnv DJANGO_SETTINGS_MODULE myproject.settings PythonDebug On </Location> -...and replace ``myproject.settings.main`` with the Python path to your -settings file. +...and replace ``myproject.settings`` with the Python path to your settings file. This tells Apache: "Use mod_python for any URL at or under '/mysite/', using the Django mod_python handler." It passes the value of ``DJANGO_SETTINGS_MODULE`` @@ -55,17 +54,6 @@ full URL. When deploying Django sites on mod_python, you'll need to restart Apache each time you make changes to your Python code. -Here's a template for an admin configuration:: - - <Location "/admin/"> - SetHandler python-program - PythonHandler django.core.handlers.modpython - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.admin - PythonDebug On - </Location> - -The only thing different here is the ``DJANGO_SETTINGS_MODULE``. - Multiple Django installations on the same Apache ================================================ @@ -77,13 +65,13 @@ instance. Just use ``VirtualHost`` for that, like so:: <VirtualHost *> ServerName www.example.com # ... - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.main + SetEnv DJANGO_SETTINGS_MODULE myproject.settings </VirtualHost> <VirtualHost *> - ServerName admin.example.com + ServerName www2.example.com # ... - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.admin + SetEnv DJANGO_SETTINGS_MODULE myproject.other_settings </VirtualHost> If you need to put two Django installations within the same ``VirtualHost``, @@ -95,13 +83,13 @@ mess things up. Use the ``PythonInterpreter`` directive to give different ServerName www.example.com # ... <Location "/something"> - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.main - PythonInterpreter myproject_main + SetEnv DJANGO_SETTINGS_MODULE myproject.settings + PythonInterpreter myproject </Location> - <Location "/admin"> - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.admin - PythonInterpreter myproject_admin + <Location "/otherthing"> + SetEnv DJANGO_SETTINGS_MODULE myproject.other_settings + PythonInterpreter myproject_other </Location> </VirtualHost> diff --git a/docs/settings.txt b/docs/settings.txt index 382a661be9..acbbca96d4 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -34,7 +34,7 @@ When you use Django, you have to tell it which settings you're using. Do this by using an environment variable, ``DJANGO_SETTINGS_MODULE``. The value of ``DJANGO_SETTINGS_MODULE`` should be in Python path syntax, e.g. -``"myproject.settings.main"``. Note that the settings module should be on the +``"myproject.settings"``. Note that the settings module should be on the Python `import search path`_. .. _import search path: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html @@ -47,17 +47,17 @@ once, or explicitly pass in the settings module each time you run the utility. Example (Unix Bash shell):: - export DJANGO_SETTINGS_MODULE=myproject.settings.main + export DJANGO_SETTINGS_MODULE=myproject.settings django-admin.py runserver Example (Windows shell):: - set DJANGO_SETTINGS_MODULE=myproject.settings.main + set DJANGO_SETTINGS_MODULE=myproject.settings django-admin.py runserver Use the ``--settings`` command-line argument to specify the settings manually:: - django-admin.py runserver --settings=myproject.settings.main + django-admin.py runserver --settings=myproject.settings .. _django-admin.py: http://www.djangoproject.com/documentation/django_admin/ @@ -70,7 +70,7 @@ settings file to use. Do that with ``SetEnv``:: <Location "/mysite/"> SetHandler python-program PythonHandler django.core.handlers.modpython - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.main + SetEnv DJANGO_SETTINGS_MODULE myproject.settings </Location> Read the `Django mod_python documentation`_ for more information. diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt index d69afa7392..761b73466d 100644 --- a/docs/tutorial01.txt +++ b/docs/tutorial01.txt @@ -40,16 +40,10 @@ settings. Let's look at what ``startproject`` created:: __init__.py apps/ __init__.py - settings/ - __init__.py - admin.py - main.py - urls/ - __init__.py - admin.py - main.py + settings.py + urls.py -First, edit ``myproject/settings/main.py``. It's a normal Python module with +First, edit ``myproject/settings.py``. It's a normal Python module with module-level variables representing Django settings. Edit the file and change these settings to match your database's connection parameters: @@ -69,11 +63,6 @@ these settings to match your database's connection parameters: point. Do that with "``CREATE DATABASE database_name;``" within your database's interactive prompt. - Also, note that MySQL and sqlite support is a recent development, and Django - hasn't been comprehensively tested with either database. If you find any - bugs in those bindings, please file them in `Django's ticket system`_ so we - can fix them immediately. - Now, take a second to make sure ``myproject`` is on your Python path. You can do this by copying ``myproject`` to Python's ``site-packages`` directory, or you can do it by altering the ``PYTHONPATH`` environment variable. See the @@ -84,7 +73,7 @@ or you can do it by altering the ``PYTHONPATH`` environment variable. See the Run the following command:: - django-admin.py init --settings=myproject.settings.main + django-admin.py init --settings=myproject.settings The ``django-admin.py`` utility generally needs to know which settings module you're using. Here, we're doing that by specifying ``settings=`` on the command @@ -92,11 +81,11 @@ line, but that can get tedious. If you don't want to type ``settings=`` each time, you can set the ``DJANGO_SETTINGS_MODULE`` environment variable. Here's how you do that in the Bash shell on Unix:: - export DJANGO_SETTINGS_MODULE=myproject.settings.main + export DJANGO_SETTINGS_MODULE=myproject.settings On Windows, you'd use ``set`` instead:: - set DJANGO_SETTINGS_MODULE=myproject.settings.main + set DJANGO_SETTINGS_MODULE=myproject.settings If you don't see any errors after running ``django-admin.py init``, you know it worked. That command initialized your database with Django's core database @@ -221,7 +210,7 @@ But first we need to tell our project that the ``polls`` app is installed. projects, and you can distribute apps, because they don't have to be tied to a given Django installation. -Edit the myproject/settings/main.py file again, and change the ``INSTALLED_APPS`` +Edit the myproject/settings.py file again, and change the ``INSTALLED_APPS`` setting to include the string "myproject.apps.polls". So it'll look like this:: INSTALLED_APPS = ( diff --git a/docs/tutorial02.txt b/docs/tutorial02.txt index b0b345ae36..9aeeb9d026 100644 --- a/docs/tutorial02.txt +++ b/docs/tutorial02.txt @@ -24,15 +24,26 @@ application and will focus on Django's automatically-generated admin site. The admin isn't necessarily intended to be used by site visitors; it's for site managers. +Activate the admin site +======================= + +The Django admin site is not activated by default -- it's an opt-in thing. To +activate the admin site for your installation, do these three things: + + * Add ``"django.contrib.admin"`` to your ``INSTALLED_APPS`` setting. + * Run the command ``django-admin.py install admin``. This will create an + extra database table that the admin needs. + * Edit your ``myproject.urls`` file and uncomment the line below + "Uncomment this for admin:". This file is a URLconf; we'll dig into + URLconfs in the next tutorial. For now, all you need to know is that it + maps URL roots to applications. + Create a user account ===================== Run the following command to create a superuser account for your admin site:: - django-admin.py createsuperuser --settings="myproject.settings.main" - -(Note: You can use either "myproject.settings.main" or "myproject.settings.admin" -here. They both reference the same database.) + django-admin.py createsuperuser --settings=myproject.settings The script will prompt you for a username, e-mail address and password (twice). @@ -45,36 +56,26 @@ server and explore the admin site. Just run the following command to start the server:: - django-admin.py runserver --settings="myproject.settings.admin" + django-admin.py runserver --settings=myproject.settings It'll start a Web server running locally -- on port 8000, by default. If you want to change the server's port, pass it as a command-line argument:: - django-admin.py runserver 8080 --settings="myproject.settings.admin" + django-admin.py runserver 8080 --settings=myproject.settings DON'T use this server in anything resembling a production environment. It's intended only for use while developing. -Now, open a Web browser and go to "/admin/" on your domain. You should see the -admin's login screen: +Now, open a Web browser and go to "/admin/" on your local domain -- e.g., +http://127.0.0.1:8000/admin/. You should see the admin's login screen: .. image:: http://media.djangoproject.com/img/doc/tutorial/admin01.png :alt: Django admin login screen -.. admonition:: Note - - If you get an error telling you that the URL 'admin/' didn't match any of - your URLconf entries, you most likely used ``myproject.settings.main`` - instead of ``myproject.settings.admin``. - Enter the admin site ==================== -Now, try logging in. - -If it didn't work, read the `"I can't log in" questions`_ in the FAQ. - -If it worked, you should see the Django admin index page: +Now, try logging in. You should see the Django admin index page: .. image:: http://media.djangoproject.com/img/doc/tutorial/admin02t.png :alt: Django admin index page @@ -381,39 +382,47 @@ think they should. Customize the admin look and feel ================================= -Clearly having "Django administration" and "example.com" at the top of each +Clearly, having "Django administration" and "example.com" at the top of each admin page is ridiculous. It's just placeholder text. -That's easy to change, though, using Django's template system. +That's easy to change, though, using Django's template system. The Django admin +is powered by Django itself, and its interfaces use Django's own template +system. (How meta!) -Open your admin settings file and look at the ``TEMPLATE_DIRS`` setting. -``TEMPLATE_DIRS`` is a tuple of filesystem directories to check when loading -Django templates. It's a search path. +Open your settings file (``myproject/settings.py``, remember) and look at the +``TEMPLATE_DIRS`` setting. ``TEMPLATE_DIRS`` is a tuple of filesystem +directories to check when loading Django templates. It's a search path. -The ``django-admin.py startproject`` command automatically prepopulated -this setting with the location of Django's default admin templates, according -to where you have Django installed. But let's add an extra line to -``TEMPLATE_DIRS`` so that it checks a custom directory first, before checking -the default admin template directory:: +By default, ``TEMPLATE_DIRS`` is empty. So, let's add a line to it, to tell +Django where our templates live. TEMPLATE_DIRS = ( - "/home/mytemplates/admin", - "/usr/lib/python2.3/site-packages/django/conf/admin_templates", + "/home/mytemplates", # Change this to your own directory. ) -Again, note that you should edit the admin settings file, not the main settings -file. That's because we're dealing with admin-site templates. +Now copy the template ``admin/base_site.html`` from within the default Django +admin template directory (``django/contrib/admin/templates``) into an ``admin`` +subdirectory of whichever directory you're using in ``TEMPLATE_DIRS``. For +example, if your ``TEMPLATE_DIRS`` includes ``"/home/mytemplates"``, as above, +then copy ``django/contrib/admin/templates/admin/base_site.html`` to +``/home/mytemplates/admin/base_site.html``. -Now copy the template ``base_site.html`` from within the default Django admin -template directory, into ``/home/mytemplates/admin`` (or wherever you're -putting your custom admin templates). Edit the file and replace the generic -Django stuff with your own site's name as you see fit. +Then, just edit the file and replace the generic Django text with your own +site's name and URL as you see fit. Note that any of Django's default admin templates can be overridden. To override a template, just do the same thing you did with ``base_site.html`` -- copy it from the default directory into your custom directory, and make changes. +Astute readers will ask: But if ``TEMPLATE_DIRS`` was empty by default, how was +Django finding the default admin templates? The answer is that, by default, +Django automatically looks for a ``templates/`` subdirectory within each app +package, for use as a fallback. See the `loader types documentation`_ for full +information. + +.. _loader types documentation: http://www.djangoproject.com/documentation/templates_python/#loader-types + Customize the admin index page ============================== @@ -425,11 +434,11 @@ setting. But the order in which it displays things is random, and you may want to make significant changes to the layout. After all, the index is probably the most important page of the admin, and it should be easy to use. -The template to customize is ``index.html``. (Do the same as with -``base_site.html`` in the previous section -- copy it from the default directory -to your custom template directory.) Edit the file, and you'll see it uses a -template tag called ``{% get_admin_app_list as app_list %}``. That's the magic -that retrieves every installed Django app. Instead of using that, you can +The template to customize is ``admin/index.html``. (Do the same as with +``admin/base_site.html`` in the previous section -- copy it from the default +directory to your custom template directory.) Edit the file, and you'll see it +uses a template tag called ``{% get_admin_app_list as app_list %}``. That's the +magic that retrieves every installed Django app. Instead of using that, you can hard-code links to object-specific admin pages in whatever way you think is best. diff --git a/docs/tutorial03.txt b/docs/tutorial03.txt index f602bf2ebd..3b5e0e8d94 100644 --- a/docs/tutorial03.txt +++ b/docs/tutorial03.txt @@ -62,12 +62,12 @@ arguments from the dictionary (an optional third item in the tuple). For more on ``HTTPRequest`` objects, see the `request and response documentation`_. When you ran ``django-admin.py startproject myproject`` at the beginning of -Tutorial 1, it created a default URLconf in ``myproject/settings/urls/main.py``. -It also automatically set your ``ROOT_URLCONF`` setting to point at that file:: +Tutorial 1, it created a default URLconf in ``myproject/urls.py``. It also +automatically set your ``ROOT_URLCONF`` setting to point at that file:: - ROOT_URLCONF = 'myproject.settings.urls.main' + ROOT_URLCONF = 'myproject.urls' -Time for an example. Edit ``myproject/settings/urls/main.py`` so it looks like +Time for an example. Edit ``myproject/urls.py`` so it looks like this:: from django.conf.urls.defaults import * @@ -84,8 +84,8 @@ say, "/polls/23/", Django will load this Python module, because it's pointed to by the ``ROOT_URLCONF`` setting. It finds the variable named ``urlpatterns`` and traverses the regular expressions in order. When it finds a regular expression that matches -- ``r'^polls/(?P<poll_id>\d+)/$'`` -- it loads the -associated Python package/module: ``myproject.polls.views.polls.detail``. That -corresponds to the function ``detail()`` in ``myproject/polls/views/polls.py``. +associated Python package/module: ``myproject.apps.polls.views.polls.detail``. That +corresponds to the function ``detail()`` in ``myproject/apps/polls/views/polls.py``. Finally, it calls that ``detail()`` function like so:: detail(request=<HttpRequest object>, poll_id=23) @@ -122,12 +122,7 @@ make sure Django is following the URLconf properly. Fire up the Django development Web server:: - django-admin.py runserver --settings="myproject.settings.main" - -(If you're coming here straight from Tutorial 2, note that we're now running -the server with ``--settings=myproject.settings.main`` instead of -``--settings=myproject.settings.admin``. You'll need to restart the server to -change the ``settings`` parameter.) + django-admin.py runserver --settings=myproject.settings Now go to "http://localhost:8000/polls/" on your domain in your Web browser. You should get a Python traceback with the following error message:: @@ -413,19 +408,15 @@ Our poll app is pretty decoupled at this point, thanks to the strict directory structure that ``django-admin.py startapp`` created, but one part of it is coupled to the Django settings: The URLconf. -We've been editing the URLs in ``myproject/settings/urls/main.py``, but the -URL design of an app is specific to the app, not to the Django installation -- -so let's move the URLs within the app directory. - -Create a directory ``myproject/apps/polls/urls/``, and put a blank file called -``__init__.py`` into it. (The ``__init__.py`` file is necessary for Python to -treat the directory as a package.) Then copy the file -``myproject/settings/urls/main.py`` to ``myproject/apps/polls/urls/polls.py``. +We've been editing the URLs in ``myproject/urls.py``, but the URL design of an +app is specific to the app, not to the Django installation -- so let's move the +URLs within the app directory. -Then, change ``myproject/settings/urls/main.py`` to remove the poll-specific -URLs and insert an ``include()``:: +Copy the file ``myproject/urls.py`` to ``myproject/apps/polls/urls.py``. Then, +change ``myproject/urls.py`` to remove the poll-specific URLs and insert an +``include()``:: - (r'^polls/', include('myproject.apps.polls.urls.polls')), + (r'^polls/', include('myproject.apps.polls.urls')), ``include()``, simply, references another URLconf. Note that the regular expression doesn't have a ``$`` (end-of-string match character) but has the @@ -437,12 +428,12 @@ Here's what happens if a user goes to "/polls/34/" in this system: * Django will find the match at ``'^polls/'`` * It will strip off the matching text (``"polls/"``) and send the remaining - text -- ``"34/"`` -- to the 'myproject.apps.polls.urls.polls' urlconf for + text -- ``"34/"`` -- to the 'myproject.apps.polls.urls' urlconf for further processing. Now that we've decoupled that, we need to decouple the -'myproject.apps.polls.urls.polls' urlconf by removing the leading "polls/" -from each line:: +'myproject.apps.polls.urls' urlconf by removing the leading "polls/" from each +line:: urlpatterns = patterns('myproject.apps.polls.views.polls', (r'^$', 'index'), |
