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实现求最大公约数及判断素数的方法
May 26 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
python实现多进程通信实例分析
Sep 01 Python
Django配置跨域并开发测试接口
Nov 04 Python
如何用Django处理gzip数据流
Jan 29 Python
Python使用scapy模块发包收包
May 07 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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
PHP Token(令牌)设计
2008/03/15 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
详解vue中axios的封装
2018/07/18 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
python中import学习备忘笔记
2017/01/24 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
学生安全教育材料
2014/02/14 职场文书
《恐龙》教学反思
2014/04/27 职场文书
医学专业自荐信
2014/06/14 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书