django 用户上传文件media的存储访问配置1
1. 首先新建文件夹media 后
在项目setting中具体配置:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在 setting 中的 TEMPLATES 下的 OPTIONS 中的 context_processors 中追加:
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
......
'OPTIONS': {
'context_processors': [
......
'django.template.context_processors.media', # django 2
# ('django.core.context_processors.media' # django1.x 版本)
],
},
},
]
此时 就可以在 templates下的 html 模板中使用 {{ MEDIA_URL }}{{ book.image }} 自动生成 相应链接 如 http://127.0.0.1:8000/media/image/2019/02/10489s.jpg
2 在url.py 中配置路由:
from bookweb.settings import MEDIA_ROOT, STATICFILES_ROOT
from django.views.static import serve urlpatterns = [
re_path('^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT }),
]
此时 请求图片链接 http://127.0.0.1:8000/media/image/2019/02/10489s.jpg 也可以访问相关图片
关于在用户上传时,文件的存储:
django 的modle 中的字段用于文件存储的主要有两个: models.ImageField 和 models.FileField
其中 内部参数都有 upload_to 其设置的为上传文件的 存储相对路径, 以之前 设置的 MEDIA_URL 为相对点
如modle中定义的img :
img = models.ImageField(upload_to='img/%Y/%m', verbose_name='图片')
# %Y 创建以年份为名的文件夹 %Ym 创建以月份为名的文件夹
用户上传图片时img存储的值为 图片的相对于的相对路径,即media文件夹下的img文件加下的年份文件夹下的月份文件夹内的图片地址。
实现代码为
由于是POST 方式 上传的数据文件, 我们先对其进行表单验证:
先在应用下的forms.py 创建需要的form表单
class UploadImageForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['image']
在定义域上传文件处理的函数或View:
class ImageUploadView(LoginRequiredMixin, View):
'''上传头像'''
def post(self, request):
# 保存方法一
# image_form = UploadImageForm(request.POST, request.FILES)
# if image_form.is_valid():
# image = image_form.cleaned_data['image']
# request.user.image = image
# request.user.save()
# 保存方法二
image_form = UploadImageForm(request.POST, request.FILES, instance=request.user)
if image_form.is_valid():
image_form.save()
return render(request, 'usercenter-info.html', {})
django 会自动将内存中的文件保存到我们modle类中定义的路径下,并将其相对路径值传给验证后的 form 下的 cleaned_data[key] 中。 如上述代码中的方法一。
django 用户上传文件media的存储访问配置1的更多相关文章
- Django之用户上传文件的参数配置
Django之用户上传文件的参数配置 models.py文件 class Xxoo(models.Model): title = models.CharField(max_length=128) # ...
- 7月3日 Django 头像预览、用户上传文件操作、logging、debug_tool_bar
1. 注册功能 1. 头像预览 //头像预览 $('#id_avatar').change(function () { console.log(this.files[0]) //找到选中的头像文件 v ...
- Javascript 上传文件到Azure存储
对一些前端工程师来讲,使用javascript上传文件到Azure存储中可能是需要掌握的技能,希望这篇博客能给到帮助. 在开始前我们需要了解以下几点: 共享访问签名(Shared Access Sig ...
- VSFTPD匿名用户上传文件
1.安装vsftpd yum -y install vsftpd yum -y install ftp 客户端 2.编写配置文件 vim /etc/vsftpd/vsftpd.conf anonymo ...
- 【django】本地开发media用户上传文件访问路径找不到
当我们在本地开发的时候,会碰到static可以访问,但是用户上传的文件设置在media下不可访问怎么办?settings配置: 接着在你的urls文件添加: from . import setting ...
- Django设置上传文件夹
django提供了两种字段类型models.FileField与models.ImageField,用于保存上传文件与图象.这两类字段提供了一个参数'upload_to',用于定义上传文件保存的路径( ...
- django MongoDB上传文件
django上传文件,查询到的资料都是用的django自己的models.Model类,去定义一个FileField类型的存储文件,并且在里面加一句upload_to,如下所示: 但是如果用mon ...
- django处理上传文件配置
1.sttings中配置 'django.template.context_processors.media' TEMPLATES = [ { 'BACKEND': 'django.template. ...
- django 实现上传文件功能
需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...
随机推荐
- 路飞学城Python-Day36
24-记录的增删改查 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT I ...
- HDU 2256 Problem of Precision( 矩阵快速幂 )
链接:传送门 题意:求式子的值,并向下取整 思路: 然后使用矩阵快速幂进行求解 balabala:这道题主要是怎么将目标公式进行化简,化简到一个可以使用现有知识进行解决的一个过程!菜的扣脚...... ...
- minicom不能连arm-linux开发板的问题终于解决了!
前一段时间一直有个问题困扰着我,大概是一次重新编译过kernel之后, gentoo上的minicom就不能和windows和开发板通信了. 为了解决这个问题,我把glibc/kernel/minic ...
- Python学习笔记(4)列表
2019-02-26 列表(list):①创建方法:用‘[ ]’,将数据包括起来,数据之间用逗号隔开.②空列表:empty = []③增删改查: 1)增加: a.append()方法——将元素添加到列 ...
- Git学习总结(9)——如何构建你自己的 Git 服务器
现在我们将开始学习如何构建一个Git服务器,如何在具体的事件中写一个针对特定的触发操作的自定义Git(例如通告),如何发布你的代码到一个网站. 目前为止,用户对Git的焦点主要在Git的使用上.这篇文 ...
- 电子签章盖章之jQuery插件jquery.zsign
简介: 使用jquery.zsign可以实现电子签章盖章效果,使用方便,只需提供自己的章图片.效果图如下: 页面引用: <link href=&quo ...
- linux 下面avr开发环境的安装
(1)安装开发工具链 yum install avr-* 会安装以下的工具 avr-gcc-4.7.2-1.fc17.i686avr-libc-1.8.0-2.fc17.noarchavr-binut ...
- POJ 3664 Election Time 题解
这道题网上非常多人都会说easy,水题之类的话,只是我看了下说这种话的人的程序,能够说他们的程序都不及格! 为什么呢?由于他们的程序都是使用简单的二次排序水过(大概你能搜索到的多是这种程序).那样自然 ...
- spark学习及环境配置
http://dblab.xmu.edu.cn/blog/spark/ 厦大数据库实验室博客 总结.分享.收获 实验室主页 首页 大数据 数据库 数据挖掘 其他 子雨大数据之Spark入门教程 林子 ...
- zzuoj--10424--无聊的课(简单几何)
10424: 无聊的课 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 81 Solved: 16 [Submit][Status][Web Boar ...