【问题标题】:Upgraded to Django 1.4 but admin is still looking in media dir for static files升级到 Django 1.4 但管理员仍在媒体目录中查找静态文件
【发布时间】:2012-04-29 06:42:36
【问题描述】:

我升级到 Django 1.4,现在我的管理静态文件将无法加载。

我的设置文件的相关部分如下所示:

MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(SITE_ROOT, 'static')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

INSTALLED_APPS = (
    # django apps
    'django.contrib.admin',
    'django.contrib.admindocs',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.messages',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.staticfiles',

我收集了。

所以现在文件显示在我的项目的静态目录中,但是当我尝试访问时,例如,http://localhost:8000/static/admin/js/actions.js 我得到一个带有“/usr/local/lib/python2.7/dist-packages/django”的 404 /contrib/admin/media/js/actions.js" 不存在

为什么 django 在我的媒体目录而不是我的静态目录中查找,我该如何解决?

【问题讨论】:

  • 对我来说一切都很好,除了 1.4 你不再需要ADMIN_MEDIA_PREFIX。我不认为这会破坏它,但将其删除并查看。

标签: django django-admin django-settings django-staticfiles


【解决方案1】:

问题其实是我用的是runcserver而不是runserver,而runcserver是硬编码的:

option_list = BaseCommand.option_list + (
    make_option('--noreload', action='store_false', dest='use_reloader', default=True,
        help='Tells Django to NOT use the auto-reloader.'),
    make_option('--adminmedia', dest='admin_media_path', default='',
        help='Specifies the directory from which to serve admin media.'),
)

try:
    path = admin_media_path or django.__path__[0] + '/contrib/admin/media'

而不是'/contrib/admin/static'

使用 runcserver --adminmedia 'static/admin' 清除一切。

【讨论】:

    【解决方案2】:

    来自https://docs.djangoproject.com/en/dev/releases/1.4/#django-contrib-admin

    如果您隐式依赖管理静态文件的路径 在 Django 的源代码中,您需要更新该路径。这 文件从 django/contrib/admin/media/移动到 django/contrib/admin/static/admin/.

    检查您的 urls.py。也许它包含这样的内容:

    if settings.DEBUG:
        urlpatterns += patterns('',
        url(r'^somepath/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'),
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 2012-04-15
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2011-07-23
      相关资源
      最近更新 更多