学习笔记,仅供参考,有错必纠
引用:使用模型来处理上传的文件;Django static静态配置文件
MEDIA_ROOT和MEDIA_URL
- 变量解释
MEDIA_ROOT:指定用户上传文件的本地路径,比如,指定利用FileFIeld,ImageField上传文件的路径;
MEDIA_URL:指定URL的映射,前后要加上/
比如'/work/'
。
- 配置过程
- 在settings文件中设置
MEDIA_URL
,比如MEDIA_URL = '/work/'
- 在settings文件中设置
MEDIA_ROOT
,可以是任意位置(与STATIC_ROOT不同),用于保存上传的文件:
MEDIA_ROOT = os.path.join(BASE_DIR, 'work')
MEDIA_URL = '/work/'
- 在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)
- 在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/