【问题标题】:Django Admin : Class MediaDjango 管理员:类媒体
【发布时间】:2013-02-26 09:58:24
【问题描述】:

我有一个类媒体如下

class helloAdmin(admin.ModelAdmin):
    class Media:
        js = ['choice.js']
admin.site.register(hello,helloAdmin)

staticfiles 应用程序将 STATIC_URL 预先添加到媒体路径。但我希望 MEDIA_URL 被添加而不是 STATIC_URL 并且 STATIC_URL 不是空的。如何做到这一点?

【问题讨论】:

  • 就我个人而言,我看不出您是如何做到这一点的,但这是有原因的吗?因为,您知道,MEDIA_URL 用于用户上传的文件,而不是用于静态媒体。
  • 您能告诉我您的MEDIA_URLMEDIA_ROOTSTATIC_ROOTSTATIC_URL,以便我更好地帮助您吗?

标签: django django-admin


【解决方案1】:

您可以通过以下设置实现:

import os
CURRENT_PATH = os.path.abspath((os.path.dirname(__file__)))

MEDIA_ROOT = os.path.join(CURRENT_PATH, 'uploads')

MEDIA_URL = '/site_media/'

urls.py

from django.conf import settings
urlpatterns += patterns('',
    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)

admin.py

class helloAdmin(admin.ModelAdmin):
    class Media:
        js = ['/site_media/choice.js']
admin.site.register(hello,helloAdmin)

不建议使用MEDIA_URL 来提供静态文件。根据 django 文档,当STATIC_URL 非空时,MEDIA_URL 不会被引用用于媒体文件。参考this part of documentation

所以我建议你使用以下设置:

STATIC_ROOT = 'static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(CURRENT_PATH, 'media'),
)

admin.py

class helloAdmin(admin.ModelAdmin):
    class Media:
        js = ['choice.js']
admin.site.register(hello,helloAdmin)

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 2023-03-10
    • 1970-01-01
    • 2016-05-28
    • 2016-02-17
    • 2016-06-12
    • 2013-01-14
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多