Django 配置media文件

为什么要配置media

​ 我们自己写的本地网页,不配置media也能访问到项目下的静态文件。但是当项目部署到服务器之后,就无法访问本地的静态文件了。所以为了让项目部署到服务器之后,能够访问静态文件,需要配置media。

1、项目根目录下新建media文件夹

media文件夹就是静态文件上传保存的路径

2、settings.py中添加如下内容

# settings.py
import os

# Django项目自动配置好的根路径
BASE_DIR = os.path.dirname(os.path.diname(os.path.abspath(__file__)))


# TEMPLATES中新添'django.template.context_processors.media'
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',
            ],
        },
    },
]

# 配置media文件夹的路径
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

3、urls文件中配置路由

# 总项目urls.py

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

urlpatterns = [
    # server是一个视图函数server(request, path), 通过path找到文件然后返回response
    # 字典中的document_root是默认参数,不是前端和后端传过来的
    url(r'media/(?P<path>.*)$', server, {'document_root': settings.MEDIA_ROOT})
]

4、模板中使用

...

# {{img.url}}是图片路径
<img class="media-object" src="{{ MEDIA_URL }}{{img.url}}" alt="hahaha">

...
posted @ 2019-10-15 14:01  17vv  阅读(400)  评论(0编辑  收藏  举报