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实现DNS正向查询、反向查询的例子
Apr 25 Python
详解Python中for循环的使用
Apr 14 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
用Python编写简单的微博爬虫
Mar 04 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Django框架多表查询实例分析
Jul 04 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
keras K.function获取某层的输出操作
Jun 29 Python
Python爬虫防封ip的一些技巧
Aug 06 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 strtok()函数的优点分析
2010/03/02 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php+highchats生成动态统计图
2014/05/21 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
PDO::_construct讲解
2019/01/27 PHP
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
python连接mongodb密码认证实例
2018/10/16 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
优秀党员获奖感言
2014/02/18 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
股票投资建议书
2014/05/19 职场文书
公司运动会策划方案
2014/05/25 职场文书
航空学院求职信
2014/06/11 职场文书
免职证明样本
2014/10/23 职场文书
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL