Django Admin:Class Media

问题描述 投票:5回答:1

我有一个类媒体如下

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

staticfiles应用程序将STATIC_URL添加到媒体路径。但是我想要MEDIA_URL而不是STATIC_URL而且STATIC_URL不是空的。如何才能做到这一点?

django django-admin
1个回答
5
投票

您可以使用以下设置实现此目的:

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文档,当MEDIA_URL不为空时,STATIC_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)
© www.soinside.com 2019 - 2024. All rights reserved.