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 ...
随机推荐
- 《Exception》第八次团队作业:Alpha冲刺(第一天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...
- NodeJS踩坑实录
nodejs的常用api url 主要是配置一系列和路径相关的信息 url.parse(urlString[, parseQueryString[, slashesDenoteHost]]) 将一个U ...
- Python socket通信之FTP
Python中利用socket进行server端和client端通信是网络编程的基础,是最简单的传输范例. (懂网络的请自动跳过这一部分) 首先,要想通信,必须建立连接,建立连接的过程,需要clien ...
- [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)
前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综 ...
- linux内核(五)虚拟文件系统
虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备. 虚拟文件系统本身是linux内核的一部分,是纯软件 ...
- NYIST 1070 诡异的电梯【Ⅰ】
诡异的电梯[Ⅰ]时间限制:1000 ms | 内存限制:65535 KB难度:3 描述新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节 ...
- Bridge桥接模式(设计模式11)
在没有使用桥接模式: 扩展新问题(类归属膨胀问题) 1增加性的电脑类型,要增加每个品牌下面的类 2如果要增加一个新的电脑品牌,要增加美中电脑类型的类 违背单一职责原则: · 一个类:联想笔记本,有两个 ...
- spring mvc过滤器filter
SpringMVC 过滤器Filter使用解析 1.如上所示的spring-web.jar包结构所示, Spring的web包中中提供有很多过滤器,这些过滤器位于org.springframework ...
- OSGI项目中获取文件路径
假设想依据给定的文件名创建一个File实例,你可能会这么写: File file = new File(当前类.class.getResource("config").toURI( ...
- Wing IDE 怎样设置 python版本号
机器上同一时候装了Python3和Python2,使用Wing IDE, 由于Python2和3是有非常大的差别的,所以时不时的须要更改IDE使用的Python版本号.以下介绍方法: 1.打开Edit ...