[技术博客] Django中文件的保存与访问

TextMarking项目开发中,数据库需要保存用户上传的文本文档。

原型设计:用户点击上传文本->保存文本->文本发送到后端保存为文件。

我在此记录一种文本保存的方法

1. 在settings中配置media路径

在django项目根目录添加一个文件夹media,并在settings中添加如下路径

MEDIA_URL = '/media/' 

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

2. 在url中配置访问路径

from django.conf.urls import url,include
from django.contrib import admin
from django.views.static import serve
from 项目名字.settings import MEDIA_ROOT urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^media/(?P<path>.*)$', serve, {"document_root":MEDIA_ROOT}), url(r'^video/', include("APP名字.urls")), ]

配置完成后,可以通过http://127.0.0.1:8000/media/文件夹名/.../文件名访问项目终media文件夹下的文件

3. 配置models

from django.db import models
from django.core.files.storage import FileSystemStorage class Car(models.Model):
photo = models.FileField(upload_to='video')

这是一个文件,不一定是图片。FileField将数据插入数据库的时候,会自动存放在配置的media文件夹下的media/video/文件名中,如果重复,会自动重命名。

4. views中保存文件

from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import View
# 导入刚刚的Cal类
from .models import Car class UploadView(View):
def get(self, request):
return HttpResponse('result') def post(self, request):
#接收上传的文件
file_obj = request.FILES.get('file', None)
# 上传文件的名字
print(file_obj.name)
# 我们给他重新命名
file_obj.name = "123456.mp4"
# 传入数据库
car= Car(photo=file_obj)
# 保存
car.save()
return HttpResponse('post')

video/123456.mp4存了两次,第二次因为重复,变成了video/123456_PomZXmG.mp4。

如果要对文件进行访问,需要查询这个字段的值,染后拼接处url即可,例如:

http://127.0.0.1:8000/media/video/123456_PomZXmG.mp4

参考资料

django上传文件并保存,还可以访问

django怎样保存上传的文件

[技术博客] Django中文件的保存与访问的更多相关文章

  1. [技术博客]windows中使用docker技术

    背景 我们的工程使用了一个叫做termux的安卓上的linux终端,这个终端在所有的软件包里硬编码了软件的运行路径(/data/data/com.termux/..),由于安卓系统的权限设计,我们名为 ...

  2. [技术博客]Django框架-后端的搭建

    目录 Django框架-后端的搭建 前言 环境的部署 项目的创建 app的使用 创建app 修改配置文件 app中数据表的构建 前端接口 接口的路径 运行服务器 验证后端 Django框架-后端的搭建 ...

  3. [技术博客]django连接mysql数据库的方法及部分问题的解决方法

    配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版本:Django 2.2 MySql版本:5.7.26 数据库选择 我们 ...

  4. [技术博客]Pyqt中View类别容器和Widget类别容器的区别

    Pyqt中View类别容器和Widget类别容器的区别 简介 在beta迭代中,我们选择用pyqt5来重写alpha迭代中使用tkinter库编写的界面. ​ 按钮之类的与tkiner使用无异,在显示 ...

  5. [技术博客]React-Native中的组件加载、卸载与setState问题

    React-Native中的组件加载.卸载与setState问题. Warning: Can only update a mounted or mounting component. This usu ...

  6. C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客

    C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客 C++中实现对map按照value值进行排序 2012-03-15 15:32:36 标签:map 职场 休闲 排 ...

  7. 【技术博客】Django中文件下载的实现

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPy ...

  8. 【技术博客】JWT的认证机制Django项目中应用

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. JWT的认证机制Django项目中应用 这篇技术博客基于软 ...

  9. 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等

    本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...

随机推荐

  1. 10个实战及面试常用Linux Shell脚本编写

    来自:http://blog.51cto.com/lizhenliang/1929044 注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规 ...

  2. 《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)

    1.简介 在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下.这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解. 2.浏 ...

  3. promise入门基本使用

    Promise入门详解和基本用法   异步调用 异步 JavaScript的执行环境是单线程. 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任 ...

  4. 学习PHP中的高精度计时器HRTime扩展

    不知道大家还记得在学校的时候体育测试时老师带的秒表吗?当枪声想起时,我们开始跑步,这时秒表启动,当我们跑过终点后,老师会按下按扭记录我们的成绩,这就是一个典型的定时器的应用.今天我们要学习的内容其实就 ...

  5. 【tp6】解决Driver [Think] not supported.

    使用助手函数view时会出现 解决方法:使用composer安装composer require topthink/think-view

  6. Charles安装https证书

    Charles抓取https的包,出现unknow,需要安装https证书.

  7. javascript LinkedList js 双向循环链表 Circular Linked List

    javascript LinkedList: function Node(elem, prev, next) { this.elem = elem; this.prev = prev ? prev : ...

  8. 鸿蒙内核源码分析(中断切换篇) | 系统因中断活力四射 | 百篇博客分析OpenHarmony源码 | v42.02

    百篇博客系列篇.本篇为: v42.xx 鸿蒙内核源码分析(中断切换篇) | 系统因中断活力四射 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...

  9. Loj#6503-「雅礼集训 2018 Day4」Magic【分治NTT】

    正题 题目链接:https://loj.ac/p/6503 题目大意 \(n\)张卡\(m\)种,第\(i\)种卡有\(a_i\)张,求所有排列中有\(k\)对相邻且相同的卡牌. \(1\leq n\ ...

  10. CF643F-Bears and Juice【组合数学】

    正题 题目链接:https://www.luogu.com.cn/problem/CF643F 题目大意 题目有点奇怪就直接放翻译了 有 \(n\) 只熊和若干桶果汁和恰好一桶酒,每一天每只熊会选择一 ...