【Django】MEDIA的配置及用法 -- 2019-08-08 18:01:56

原文: http://106.13.73.98/__/73/

如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA.

下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法.

第一步 settings.py

# media配置
MEDIA_URL = 'media/'  # 用于指定url路径
MEDIA_ROOT = os.path.join(BASE_DIR, "媒体库")  # 用于指定上传文件的存储路径

第二步 urls.py

from django.conf.urls import url
from django.contrib import admin
from django.views.static import serve  # !
from blog097.settings import MEDIA_ROOT  # !

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # media路径配置
    url(r'media/(?P<path>.*)/$', serve, {'document_root': MEDIA_ROOT}),
]

第三步 models.py

from django.db import models

# 用于测试MEDIA的表
class Test(models.Model):
    # 该字段将存储上传的图片路径
    image = models.ImageField(upload_to="图片/%Y-%m")

第四步 启动Django并访问admin页面, 开始上传图片


可见,上传后,我们的项目根目录下生成了"媒体库"文件夹,且数据库中存储的是图片路径.

这样,便可以拿到图片或视频了:

补充

视图中相关的用法(项目摘):

# 部分代码如下:

def post(self, request):
    img, user = request.FILES.get('file'), request.user

    # 判断文件大小是否被允许
    if len(img) > MAX_UPLOAD_FILE_SIZE:
        return self.set_response_data(f'File size not exceeding {ALLOW_UPLOAD_FILE_SUFFIX_RE}M', 0)

    # 判断文件后缀是否被允许
    suffix = re.findall(ALLOW_UPLOAD_FILE_SUFFIX_RE, img.name, re.I)  # re.I:忽略大小写匹配

    # 如果被允许,则存储图片数据
    if suffix:
        img.name = f'{str(uuid.uuid4())}.{suffix[0].lower()}'  # 一定要改img.name,下一行的image=img会用到img.name的值
        img_obj = models.ArticleImg.objects.create(user=user, image=img)
        return self.set_response_data(f'/{MEDIA_URL}{img_obj.image}')

    # 否则的:
    return self.set_response_data('A suffix that is not allowed!', 0)

原文: http://106.13.73.98/__/73/

原文地址:https://www.cnblogs.com/gqy02/p/11322803.html

时间: 2024-08-29 11:14:06

【Django】MEDIA的配置及用法 -- 2019-08-08 18:01:56的相关文章

【Django】MEDIA的配置及用法

如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA. 下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法. 第一步 settings.py # media配置 MEDIA_URL = 'media/' # 用于指定url路径 MEDIA_ROOT = os.path.join(BASE_DIR, "媒体库") # 用于指定上传文件的存储路径 第二步 urls.py from django.conf.urls import url from django.cont

drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求、解析、渲染、响应、异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中INSTALLED_APPS注册意义 ,数据库配置

应用是否需要在INSTALLED_APPS中注册 ''' 在没有使用到app的一些特殊操作时(比如数据库相关),不需要app的__init__文件注册时,文件夹可以不用注册,但是注册后,应用的所有功能都能使用 结论:所有应用都可以完成注册 ''' 数据库配置(全部在settings文件中完成即可) import pymysql pymysql.install_as_MySQLdb() DATABASES = { 'default': { 'ENGINE': 'django.db.backends

【初学菜鸟作--KVM虚拟机配置及用法】

KVM虚拟机配置及用法 1.主要存放位置: 安装kvm虚拟机默认存放位置  --/var/lib/libvirt/images kvm虚拟机配置文件存放位置  --/etc/libvirt/qemu/ 2.常用管理命令: 管理命令 virsh list --查看已打开虚拟机列表 virsh list --all --查看所有虚拟机列表 virsh version --查看版本号 virsh start yeyue1     --启动虚拟机 virsh create /etc/libvirt/qe

linux rsync配置及用法

rsync介绍 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息.实现数据的备份迁移特性.Rsync软件适用于unlx.linux.windows等多种操作系统平台.可以实现本地或者异地备份 rsync包含的功能 1.rsync包含cp功能 命令 参数 源文件 目标文件 [[email protected] caojiaoyue]# ls /tmp/[[email protected] caojiaoyue]#

css3 media媒体查询器用法总结

css3 media媒体查询器用法总结 Author:owenhong2014-05-30 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错了,如今淘宝,凡客,携程等等公司都已经在大胆的尝试了这项技术,并完美的应用在了自己的网站上了.再不更新知识你就老了.我今天就总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. 准备工作1:设置Meta标签 首先我们在使用Media的时候

Django文件上传机制用法详解(转)

Django文件上传机制用法详解 http://www.jbxue.com/article/24283.html 分享下Django文件上传机制的用法,包括基本上传文件的原理,以及如何处理上传文件的方法,需要的朋友参考下. 当Django处理上传一个文件时,文件数据被放在request.FILES中. 这个文档解释文件怎么样被存储在磁盘上或者内存中,怎样定制默认的行为. 一,基本文件上传考虑一个包含FileField的简单的表单: 复制代码 代码示例: from  django  import 

Django基本环境配置

Django是一个开放源代码的Web应用框架,它源自一个在线新闻 Web 站点,于2005 年以开源的形式被释放出来.Django 框架的核心组件有: 1)用于创建模型的对象关系映射 2)为最终用户设计的完美管理界面 3)一流的 URL 设计 4)设计者友好的模板语言 5)缓存系统. 一.系统环境:RHEL6.0 +Python 2.6.5 + Django 1.6.4 [[email protected] ~]# uname -a Linux rhel6 2.6.32-71.el6.i686

css3 media媒体查询器用法总结(附js兼容方法)

css3 media媒体查询器用法总结 标签: 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错了,如今淘宝,凡客,携程等等公司都已经在大胆的尝试了这项技术,并完美的应用在了自己的网站上了.再不更新知识你就老了.我今天就总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. 准备工作1:设置Meta标签 首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示

Django html相关配置

本文和大家分享的主要是django中 html配置相关内容,一起来看看吧,希望对大家学习django有所帮助. html文件头要加上下面代码,意思要预加载配置文件中的staticfiles文件 {% load staticfiles %} css,js,img文件配置 其中,static为配置文件目录 <script scr={% static 'js/example.js' %}></script> <link rel="staticsheet" typ