[django]media_url

django将文件上传到media文件夹,想要在前端通过{{ MEDIA_URL }}显示出来时发现没用

settings.py中这样设置

1 MEDIA_URL = '/media/'
2 
3 MEDIA_ROOT = os.path.join(BASE_DIR, 'Media')


 html中代码

1 <img src="{{ MEDIA_URL }}learndjango.jpg" alt="">

访问页面的时候审查元素发现并不加载MEDIA_URL,只有learndjango.jpg
解决方法:

setting.py中黄色设置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'BookStore.views.global_settings',
                'django.template.context_processors.media',

            ],
        },
    },
]

views.py中render_to_response时加

 return render_to_response('index.htm', context_instance=RequestContext(request,locals()))

这样页面审查元素时会有settings.py中设置的media_url


但是还是显示不出图片
解决方法:
url中加这句
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})


概括:其实在html中不写{{ MEDIA_URL }}直接写/media/learndjango.jpg,然后加上上面的url就行了,但是media_url变了的话就会改动很多



 
原文地址:https://www.cnblogs.com/songbird/p/7113463.html