django admin static在错误的网址中提供服务

时间:2013-11-24 19:12:58

标签: python django django-templates django-admin django-staticfiles

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

使用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()

和设置类似

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")

应用

INSTALLED_APPS = (
  'django.contrib.staticfiles',
  'django.contrib.admin',
)

奇怪的是,我的自定义应用程序通过网址提供静态规范 本地主机:8000 /静态/ CSS /嗒嗒

但管理员使用

[24 / Nov / 2013 18:47:41]“GET /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)

哪个接缝好;

我很困惑,帮帮我)

1 个答案:

答案 0 :(得分:2)

您的STATIC_URL不是以斜杠开头,因此将其视为相对网址。因此你会得到:

  • /admin/(管理员所在的位置),
  • static/(您的STATIC_URL)和
  • admin/css/base.css(文件所在的位置)。

换句话说,这就是为什么它要求/admin/static/admin/css/base.css

您应该在STATIC_URL添加斜杠以请求/static/admin/css/base.css