【问题标题】:Django MEDIA_URL with CDN and Admin media带有 CDN 和管理媒体的 Django MEDIA_URL
【发布时间】:2011-11-25 09:35:42
【问题描述】:

我在一个 Django 1.3 项目中使用了一个 CDN,用于存储图像、css 等媒体资源。我在提供管理员资源时遇到问题,我所做的是:

settings.py:

MEDIA_URL = 'http://cdn.test.com/' 
ADMIN_MEDIA_PREFIX = '/admin_media/'

INSTALLED_APPS:

'django.contrib.staticfiles',

urls.py:

(r'^admin_media/(.*)', 'django.views.static.serve',
        {'document_root' : 'django/contrib/admin/media/',
         'show_indexes' : True}),

查看管理 HTML,我看到类似 /admin_media/css/base.css 的内容,但所有资源都返回 http 404。我不明白出了什么问题。

非常感谢。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    尝试以下方法:

    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        url(r'^admin/', include(admin.site.urls)),
    
        # (... other urls ...)
    )
    urlpatterns += staticfiles_urlpatterns()
    

    此外,您在urls.py 中引用的document_root 应该是绝对路径:这也可能会导致一些问题。不过,上面的内容应该替换为您的 Django 版本。

    【讨论】:

    • 您确定 staticfiles_urlpatterns() 吗?我试了一下,但它给了我一个错误:NameError: name 'staticfiles_urlpatterns' is not defined
    • 如果您确实在使用 Django 1.3,那么可以。您是否在代码中包含了 import 语句?
    • 对不起,你说得对,我忘记导入了。但它不起作用。注意:如果我尝试使用 manage.py runserver ...我可以看到管理资源,但使用 webserver(在我的情况下为 lighttpd)我不能。
    • 啊,我的错,我以为你在使用开发服务器。但这至少是一个很好的步骤:剩下的就是部署。 the docs 中定义的步骤对您有帮助吗(尤其是部署部分)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2023-03-10
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多