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的更多相关文章

  1. Django之用户上传文件的参数配置

    Django之用户上传文件的参数配置 models.py文件 class Xxoo(models.Model): title = models.CharField(max_length=128) # ...

  2. 7月3日 Django 头像预览、用户上传文件操作、logging、debug_tool_bar

    1. 注册功能 1. 头像预览 //头像预览 $('#id_avatar').change(function () { console.log(this.files[0]) //找到选中的头像文件 v ...

  3. Javascript 上传文件到Azure存储

    对一些前端工程师来讲,使用javascript上传文件到Azure存储中可能是需要掌握的技能,希望这篇博客能给到帮助. 在开始前我们需要了解以下几点: 共享访问签名(Shared Access Sig ...

  4. VSFTPD匿名用户上传文件

    1.安装vsftpd yum -y install vsftpd yum -y install ftp 客户端 2.编写配置文件 vim /etc/vsftpd/vsftpd.conf anonymo ...

  5. 【django】本地开发media用户上传文件访问路径找不到

    当我们在本地开发的时候,会碰到static可以访问,但是用户上传的文件设置在media下不可访问怎么办?settings配置: 接着在你的urls文件添加: from . import setting ...

  6. Django设置上传文件夹

    django提供了两种字段类型models.FileField与models.ImageField,用于保存上传文件与图象.这两类字段提供了一个参数'upload_to',用于定义上传文件保存的路径( ...

  7. django MongoDB上传文件

    django上传文件,查询到的资料都是用的django自己的models.Model类,去定义一个FileField类型的存储文件,并且在里面加一句upload_to,如下所示:   但是如果用mon ...

  8. django处理上传文件配置

    1.sttings中配置 'django.template.context_processors.media' TEMPLATES = [ { 'BACKEND': 'django.template. ...

  9. django 实现上传文件功能

    需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...

随机推荐

  1. android handler传递数据

    起因:在android使用get请求获取验证码时需要重开一个线程,这就造成了我无法获取到从服务器后台返回的数据 解决方法:创建全局变量,将返回的数据解析后返回给handler,再在handler中将数 ...

  2. pythone 学习笔记(粗略)

    文档目录 概述 安装 基本语法 数据结构 4.1 数字和字符串类型 4.2 元祖 4.3 列表 4.4 字典 流程语句 5.1 分支结构 5.2 逻辑运算符(if) 5.3 循环 5.3.1 for ...

  3. POJ 1905 Expanding Rods( 二分搜索 )

    题意:一个钢棍在两面墙之间,它受热会膨胀成一个圆弧形物体,这个物体长 S = ( 1 + n * C ) * L,现在给出原长 L ,温度改变量 n ,和热膨胀系数 C,求膨胀后先后中点的高度差. 思 ...

  4. centos7最小化安装图形界面

    1.安装X Window System命令 yum groupinstall "X Window System" 选择y直接安装就可以了 2.安装图形界面软件 GNOME yum ...

  5. Vue -- 只弹一次的弹框

    核心代码是 getCookie()部分,控制弹框的显示隐藏则在 created()中. <template> <div v-if="isShow"> < ...

  6. 阿里云Linux系统Nginx配置多个域名的方法

    Nginx绑定多个域名,可通过把多个域名规则写一个配置文件里实现,也可通过分别建立多个域名配置文件实现,为了管理方便,建议每个域名建一个文件,有些同类域名则可写在一个总的配置文件里. 1. 比如我想建 ...

  7. jpa自定义条件分页查询

    主要依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  8. Git学习总结(9)——如何构建你自己的 Git 服务器

    现在我们将开始学习如何构建一个Git服务器,如何在具体的事件中写一个针对特定的触发操作的自定义Git(例如通告),如何发布你的代码到一个网站. 目前为止,用户对Git的焦点主要在Git的使用上.这篇文 ...

  9. [terry笔记]学校管理系统

    如下是要求: # 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上 ...

  10. WinServer-IIS-IIS负载均衡

    安装应用程序路由 提供的服务器的地址必须是可以访问,不然无法进入到下面的这个管理界面 来自为知笔记(Wiz)