【问题标题】:django admin static serves in wrong urldjango admin static 在错误的 url 中提供服务
【发布时间】:2013-12-09 09:18:35
【问题描述】:

我有一个奇怪的问题 - 我的开发服务器试图通过使用错误的 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 提供静态服务,例如 localhost: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)

哪个接缝好;

我很困惑,帮帮我)

【问题讨论】:

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


    【解决方案1】:

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

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

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

    您应该在您的STATIC_URL 中添加一个斜杠以使其请求/static/admin/css/base.css

    【讨论】:

    • 哦,太明显了。谢谢,它有帮助)
    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2020-05-06
    • 2012-03-13
    • 2021-06-28
    • 2018-06-22
    • 2011-02-10
    相关资源
    最近更新 更多