我有一个奇怪的问题 - 我的开发服务器试图通过使用错误的 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',
)
奇怪的是,我的自定义应用程序通常通过 url 提供静态服务,例如 本地主机:8000/static/css/blah
但管理员使用
[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)
哪个接缝没问题;
我很困惑,帮帮我)
最佳答案
您的 STATIC_URL
不是以斜杠开头,因此它被视为相对 URL。因此你会得到:
/admin/
(管理员所在的位置),static/
(您的STATIC_URL
),以及admin/css/base.css
(文件所在的位置)。
换句话说,这就是它请求 /admin/static/admin/css/base.css
的原因。
您应该在 STATIC_URL
中添加一个斜杠,使其请求 /static/admin/css/base.css
。
关于python - django admin static 服务于错误的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179668/