学习笔记,仅供参考,有错必纠

引用:​​使用模型来处理上传的文件​​​;​​Django static静态配置文件​


MEDIA_ROOT和MEDIA_URL

  • 变量解释

MEDIA_ROOT:指定用户上传文件的本地路径,比如,指定利用FileFIeld,ImageField上传文件的路径;

MEDIA_URL:指定URL的映射,前后要加上​​/​​​ 比如​​'/work/'​​。

  • 配置过程
  1. 在settings文件中设置​​MEDIA_URL​​,比如​​MEDIA_URL = '/work/'​
  2. 在settings文件中设置​​MEDIA_ROOT​​,可以是任意位置(与STATIC_ROOT不同),用于保存上传的文件:
MEDIA_ROOT = os.path.join(BASE_DIR, 'work')
MEDIA_URL = '/work/'
  1. 在urls.py文件中进行配置:
from django.contrib import admin
from django.urls import path,include
from . import views
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
path('admin/', admin.site.urls),
path('', views.mainIndex),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
  1. 在settings文件中,TEMPLATES中​​'context_processors'​​​下面新增​​'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_URL设置的是​​'/work/'​​​,MEDIA_ROOT设置的是​​'F:/MyStudio/PythonStudio/goatbishop.project01/Django/PaperManageSystem01/work'​​​,在models中设置的文件上传到​​upload_to = "word"​​​,那么文件上传后实际存储地址为​​'F:/MyStudio/PythonStudio/goatbishop.project01/Django/PaperManageSystem01/work/word/'​​​,URL为:​​127.0.0.1:8000/work/word/​