django admin 静态服务地址错误

Ale*_*kin 4 python django django-templates django-admin django-staticfiles

我有一个奇怪的问题 - 我的开发服务器试图通过使用错误的网址来提供管理静态服务。

使用 Django 1.6

我的主要 urlconf

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
   url(r'^admin/', include(admin.site.urls)),
   url(r'^$', include('dash.urls')),
   )


urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)

设置就像

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
locale = lambda path: os.path.join(BASE_DIR, path)
STATIC_URL = "static/"
MEDIA_URL = "media/"
STATIC_ROOT = locale("static")
MEDIA_ROOT = locale("media")
Run Code Online (Sandbox Code Playgroud)

应用

INSTALLED_APPS = (
  'django.contrib.staticfiles',
  'django.contrib.admin',
)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我的自定义应用程序通过像 localhost:8000/static/css/blah 这样的 url 通常提供静态服务

但管理员使用

[2013年11月24日18:47:41]“获取/admin/static/admin/css/base.css HTTP/1.1”404 4316

各位,说真的,前缀 /admin/static 的起源是什么?0_o 我不使用 ADMIN_MEDIA_PREFIX 等已弃用的内容。

基本管理模板使用 {% static "admin/css/base.css" %} 标签,其代码为

from django.conf import settings
from django.template import Library

register = Library()

if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
    from django.contrib.staticfiles.templatetags.staticfiles import static
else:
    from django.templatetags.static import static

static = register.simple_tag(static)
Run Code Online (Sandbox Code Playgroud)

接缝没问题;

我很困惑,请帮助我)

Sim*_*ser 6

您的 URLSTATIC_URL不以斜杠开头,因此它被视为相对 URL。因此你会得到:

  • /admin/(这是管理员所在的位置),
  • static/(你的STATIC_URL),以及
  • admin/css/base.css(这是文件所在的位置)。

换句话说,这就是它要求的原因/admin/static/admin/css/base.css

您应该在您的内容中添加斜杠STATIC_URL以使其成为请求/static/admin/css/base.css