python中Django文件上传方法详解


Posted in Python onAugust 05, 2020

Django上传文件最简单最官方的方法

1.配置media路径

在settings.py中添加如下代码:

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

2.定义数据表

import os
from django.db import models
from django.utils.timezone import now as timezone_now
def upload_to(instance, filename):
    now = timezone_now()
    base, ext = os.path.splitext(filename)
    ext = ext.lower()
    return f'quotes/{now:%Y/%m/%Y%m%d%H%M%S}{ext}'
class Quote(models.Model):
    class Meta:
        verbose_name = 'quote'
        verbose_name_plural = verbose_name
    author = models.CharField('author', max_length=200)
    quote = models.TextField('quote')
    picture = models.ImageField('picture', upload_to=upload_to, blank=True, null=True)
    def __str__(self):
        return self.quote

这里的upload_to函数会自动把文件的名称修改为日期型的名称,不会重名。

相关推荐:《Python视频教程》

python中Django文件上传方法详解

3.添加form表单

forms.py文件

from django import forms
from .models import Quote
class QuoteForm(forms.ModelForm):
    class Meta:
        model = Quote
        fields = '__all__'

4.编写视图代码

from django.shortcuts import render, redirect
from .forms import QuoteForm
def add_quote(request):
    form = QuoteForm()
    if request.method == 'POST':
        form = QuoteForm(
            data=request.POST,
            files=request.FILES
        )
        if form.is_valid():
            form.save()
            return redirect('quote:add_quote')
    else:
        return render(request, 'quotes/add_quote.html', {
            'form': form
        })

5.编写模板html代码

<form action="{% url 'quote:add_quote' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">save</button>
</form>

6.添加url映射

在app的目录的urls.py添加
from django.urls import path
from quotes.views import add_quote
app_name = 'quote'
urlpatterns = [
    path('add/', add_quote, name='add_quote')
]

在项目目录的urls.py文件添加

from django.urls import path, include
urlpatterns = [
    path('quotes/', include('quotes.urls', namespace='quote'))
]

效果图

python中Django文件上传方法详解

知识点扩展:

最简单的文件下载功能的实现

将文件流放入HttpResponse对象即可,如

def file_download(request):
 # do something...
 with open('file_name.txt') as f:
  c = f.read()
 return HttpResponse(c)

到此这篇关于python中Django文件上传方法详解的文章就介绍到这了,更多相关Django文件上传方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用win32com库播放mp3文件的方法
May 30 Python
Django的信号机制详解
May 05 Python
python将ansible配置转为json格式实例代码
May 15 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
wxpython实现图书管理系统
Mar 12 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
Python同步遍历多个列表的示例
Feb 19 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
Sep 06 Python
Python竟然能剪辑视频
May 25 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 #Python
Python如何将将模块分割成多个文件
Aug 04 #Python
Python 保存加载mat格式文件的示例代码
Aug 04 #Python
python中判断文件结束符的具体方法
Aug 04 #Python
python字典key不能是可以是啥类型
Aug 04 #Python
Python延迟绑定问题原理及解决方案
Aug 04 #Python
Python 使用生成器代替线程的方法
Aug 04 #Python
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
多重?l件?合查?(二)
2006/10/09 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python3实现连接SQLite数据库的方法
2014/08/23 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
拾金不昧表扬信范文
2014/01/11 职场文书
关于元旦的广播稿
2014/02/16 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
养成教育经验材料
2014/05/26 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书