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 ...
随机推荐
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- Activiti Workflow HelloWorld 示例与测试环境搭建
作者:Rock 出处:http://www.ecmkit.com/zh-hans/2012/03/21/activiti-workflow-hell Activiti Workflow HelloWo ...
- 浅谈optparse 解析命令行参数库
使用的背景 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 在python中我们可以通过sys 模板的arg ...
- office2016 下载直通车
下载地址 微软官方序列号(产品激活密钥):NKGG6-WBPCC-HXWMY-6DQGJ-CPQVG. 激活工具下载 分享源地址
- SVN学习总结(1)——SVN简介及入门使用
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversi ...
- 改动购物项图书数量的Ajax处理
一.cart.jsp页面 <%@ page language="java" contentType="text/html; charset=utf-8" ...
- poj3061 Subsequence ,尺取法
A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, a ...
- Android-HttpURLConnection自己主动管理cookie
Volley那么好用的框架居然没有内置对cookie的处理,自己搞一个! public class MobCookieManager {//转载请标明出处:http://blog.csdn.net/g ...
- 《从零開始学Swift》学习笔记(Day5)——我所知道的标识符和keyword
Swift 2.0学习笔记(Day5)--我所知道的标识符和keyword 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和keyword,一直没有好好的总结,就是这 ...
- MongoDB数据修改案例
数据更新操作 队友MongoDB而言,数据更新是一件非常麻烦的事情.Mongo通常会存副本数据,数据有变更的时候,最好的做法是删除MongoDB的数据,重新插入. Mongo中提供了两个函数,一个是s ...