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 del()函数用法
Mar 24 Python
Python中使用Tkinter模块创建GUI程序实例
Jan 14 Python
Python 中的with关键字使用详解
Sep 11 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python zip()函数用法实例分析
Mar 17 Python
python实现数据库跨服务器迁移
Apr 12 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
解决使用Pandas 读取超过65536行的Excel文件问题
Nov 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
对盗链说再见...
2006/10/09 PHP
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
js+css在交互上的应用
2010/07/18 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
python中pycurl库的用法实例
2014/09/30 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python和php哪个容易学
2020/06/19 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
《祁黄羊》教学反思
2014/04/22 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
黄石寨导游词
2015/02/05 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
会议简讯范文
2015/07/20 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
Python中的socket网络模块介绍
2022/07/23 Python