Django media MEDIA_URL MEDIA_ROOT 的配置
Django中media文件夹是我们文件(比如头像、文件、视频等)数据十分重要的存放处,这里以用户头像的上传以及media文件的访问为例为大家详细讲解下media的相关实例。 在Django项目的settings.py
文件中,我们可以配置两个关于media的参数:MEDIA_ROOT
与MEDIA_URL
,下面我们就文件的上传与访问一一对这两个参数进行讲解:
Django 高级实战编程
Django高级实战 开发企业级问答网站 项目结合:需求分析/Django高级用法/算法/设计模式/TestCase测试/云计算服务
Django开发企业实战 面向就业/升职(中高级教程)
视频教程分享地址: https://study.163.com/course/introduction/1209407824.htm?share=2&shareId=400000000535031
文件的上传
首先我们在自己的Django项目中创建一个media文件夹:
然后在settings.py
中设置MEDIA_ROOT
:
接着在urls.py
中设置media路由的相关配置:
有了上面这个路由设置,我们就可以在浏览器的地址栏根据media文件夹中文件的路径去访问对应的文件了(需要注意的是为了保证安全,默认情况下Django项目中各目录的文件是不能通过地址栏去访问的)。
当然,我们这里实现的是文件上传的功能,需要将文件信息传给数据库保存,models.py
文件中的内容如下:
我们用FileField
存放上传的文件,这里需要注意:media文件夹是我们上传文件的 根目录,如果我们想再为这个“根目录”指定“子目录”的话需要通过参数upload_to
去指定,也就是说,我们上传的文件会保存在 /media/avatars目录 下,后面的参数default
表示默认图像————比如说我们想要上传头像,用户不指定头像的时候就用default
参数指定的图片。
当我们将图片上传到服务器后,就会在我们指定的目录看到上传的文件了:
文件的访问
文件的访问简介
其实,当我们在上面进行了MEDIA_ROOT
与路由的相关配置后,在浏览器输入文件的路径就可以查看对应的文件了。比如我们想查看上图中的222.jpg文件,可以在程序运行的时候在地址栏输入:
这样就可以显示这个图片了。
但是实际中,用户不可能去地址栏输入文件路径的,我们做程序的目的就是尽最大限度的解放用户的操作————那么,是否有一种方法能够让用户仅仅点击一下就能查看到对应的文件呢? 答案当然是肯定的!
这就用到了media的另外一个参数————MEDIA_URL
。
MEDIA_URL
在使用MEDIA_URL
之前我们需要新增一条中间件,在settings.py
文件的TEMPLATES
参数中加入中间件:
然后我们在settings.py
中加入MEDIA_URL
的参数:
接着我们再新增一条测试路由:
视图也比较简单:
然后模板文件中我们做相应的功能:
假如我们想实现点击a标签的文字出来222.jpg图片,可以在href加上图片的路径,这里大家看到了,我们用模板语言{{ MEDIA_URL }}
进行渲染,这里模板语言渲染出来的值其实就是我们在settings中设置的'/media/'。我们可以看一下演示效果: