django 配置media 存放调用 图片、图标等文件

一、需求分析:

一般在网站开发中,有很多类似于用户头像、用户上传的文件,这些经常要改变的媒体文件,需要有一个地方存放,于是就需要media目录,起到跟static类似的功能。

二、在settings.py中配置:

在TEMPLATES中:

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',

#追加下面这一句代码:
                'django.template.context_processors.media',
            ],
        },
    },
]

在settings.py中的最后追加代码:

MEDIA_URL="/media/"
MEDIA_ROOT=os.path.join(BASE_DIR,"media")

三、在项目urls.py中增加:

......
from django.views.static import serve
from xyw.settings import MEDIA_ROOT

urlpatterns = [
    ......

    #配置上传文件的访问处理函数
    path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),
]

四、在前端中使用:

<div id="portfoliolist">

        {% for shop in all_shops.object_list %}

        <div class="portfolio shop" data-cat="shop">
            <div class="portfolio-wrapper">
<!--引入media文件代码start-->

                <img src="{{ MEDIA_URL }}{{ shop.shop_image }}" alt="店铺封面" />
<!--引入media文件代码end-->
                <div class="label">
                    <div class="label-text"><a class="text-title">{{ shop.name }}</a><span class="text-category">{{ shop.shop_sn }}</span></div>
                    <div class="label-bg"></div>
                </div>

 

posted @ 2018-04-16 21:46  雪落忆海  阅读(508)  评论(1编辑  收藏  举报