django 所有文件都是通过wsgi.py这个文件作为入口来解析的,主要是解析django MTV框架下的.py程序文件。对于上传的图片、文件,是不需要django解析的,因此要做一些设置,告诉django,什么样网址的是这样的“媒体”文件,这些文件保存于什么地方。
1、设置settings.py文件
(1)在settings.py文件里增加一行,用于在模板文件中处理媒体文件,就是下面行号69的那一行
58 TEMPLATES = [
59 {
60 'BACKEND': 'django.template.backends.django.DjangoTemplates',
61 'DIRS': [],
62 'APP_DIRS': True,
63 'OPTIONS': {
64 'context_processors': [
65 'django.template.context_processors.debug',
66 'django.template.context_processors.request',
67 'django.contrib.auth.context_processors.auth',
68 'django.contrib.messages.context_processors.messages',
69 'django.template.context_processors.media',
70 ],
71 },
72 },
73 ]
(2)增加两个关于媒体文件路径的设置
#这个语句就是告诉django,什么样网址是媒体文件
#这里用的是media,你也可以替换成其他,比如我习惯用upload
MEDIA_URL = ‘/media/’
#这个语句告诉django,这些媒体文件具体存在于什么地方
#这是我保存上传文件的地方,是磁盘上的文件系统地址
MEDIA_ROOT = ‘/var/www/html/myproject/upload’
2、设置url
django里所有的访问都需要设置urls.py文件,静态文件也不例外,也需要在urls.py文件里配置访问媒体文件的路由。
注意这里的r’media/这个media要和settints.py里的MEDIA_URL一致
from django.urls import path,re_path
from django.views.static import serve
from cnblog import settings
##media配置——配合settings中的MEDIA_ROOT的配置,就可以在浏览器的地址栏访问media文件夹及里面的文件了
re_path(r'media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}),
这里有点感觉在settings.py和urls.py里的配置有点雷同,好像是重复了。实际上虽然数据有冗余,但是是不同的功能。
urls.py里的设置是当浏览器访问的时候,知道到哪里去读取文件。settings.py文件的设置是告诉中间件处理程序’django.template.context_processors.media’怎么管理媒体文件。