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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
说一说Python logging
Apr 15 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
Python 类的继承实例详解
Mar 25 Python
python调用摄像头显示图像的实例
Aug 03 Python
Python版名片管理系统
Nov 30 Python
Python中print函数简单使用总结
Aug 05 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
Python把图片转化为pdf代码实例
Jul 28 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
上海无线电三厂简史修改版
2021/03/01 无线电
用在PHP里的JS打印函数
2006/10/09 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
Python合并多个装饰器小技巧
2015/04/28 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
使用Python对Excel进行读写操作
2017/03/30 Python
对python中的logger模块全面讲解
2018/04/28 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
python各层级目录下import方法代码实例
2020/01/20 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
3分钟英语演讲稿
2014/04/29 职场文书
医药销售自我评价200字
2014/09/11 职场文书
办公用品管理制度
2015/08/04 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
如何自己动手写SQL执行引擎
2021/06/02 MySQL
Python 中的 copy()和deepcopy()
2021/11/07 Python