登录
首页 >  数据库 >  MySQL

Django media MEDIA_URL MEDIA_ROOT 的配置

来源:SegmentFault

时间:2023-02-16 16:16:37 407浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《Django media MEDIA_URL MEDIA_ROOT 的配置》,就很适合你!文章讲解的知识点主要包括MySQL、python、Django、flask,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

Django media MEDIA_URL MEDIA_ROOT 的配置

Django中media文件夹是我们文件(比如头像、文件、视频等)数据十分重要的存放处,这里以用户头像的上传以及media文件的访问为例为大家详细讲解下media的相关实例。
在Django项目的

MEDIA_ROOT = os.path.join(BASE_DIR,'media')

接着在

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.*)$',serve,{'document_root':settings.MEDIA_ROOT}),

有了上面这个路由设置,我们就可以在浏览器的地址栏根据media文件夹中文件的路径去访问对应的文件了(需要注意的是为了保证安全,默认情况下Django项目中各目录的文件是不能通过地址栏去访问的)。

当然,我们这里实现的是文件上传的功能,需要将文件信息传给数据库保存,

class UserInfo(models.Model):
    nid = models.AutoField(primary_key=True)
    ##头像是一个FileField——注意这里必须是“相对路径”,不能是/avatars/这样的绝对路径
    avatar = models.FileField(upload_to='avatars/',default='avatars/default.jpg')

我们用

django.template.context_processors.media

然后我们在

MEDIA_URL = '/media/'

接着我们再新增一条测试路由:

##测试
path('aa/bb',views.aa),

视图也比较简单:

def aa(request):
    return  render(request,'aa.html')

然后模板文件中我们做相应的功能:



    Title查看media目录下的一张图片

MEDIA_URL: {{ MEDIA_URL }}

假如我们想实现点击a标签的文字出来222.jpg图片,可以在href加上图片的路径,这里大家看到了,我们用模板语言

{{ MEDIA_URL }}
进行渲染,这里模板语言渲染出来的值其实就是我们在settings中设置的'/media/'。我们可以看一下演示效果:

ccc

我们可以看到,点击链接的访问效果与在浏览器的地址栏输入文件路径的效果一样。
可能有人会问了,既然效果一样,那为何不在模板中直接将a标签的href写死呢,何必用模板语言去渲染?!
当然,二者的效果固然一样,但是当我们的项目做大的时候,文件目录的组织形式会越来越复杂,在settings中设置这样一个或者几个固定的、容易记忆的变量去存储复杂的文件路径,我们在开发的时候就不会为这些“琐事”去动脑筋了,这样能够极大的提高我们的编程效率。

到这里,我们也就讲完了《Django media MEDIA_URL MEDIA_ROOT 的配置》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>