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下rrdtool模块的基本使用方法
Nov 13 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
Python编写Windows Service服务程序
Jan 04 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
Python实现简单猜数字游戏
Feb 03 Python
Python并发编程实例教程之线程的玩法
Jun 20 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循环语句笔记(foreach,list)
2011/11/29 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
Vue计算属性的使用
2017/08/04 Javascript
vue ssr 指南详读
2018/06/29 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
详解Django中的form库的使用
2015/07/18 Python
python构建自定义回调函数详解
2017/06/20 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python修改txt文件中的某一项方法
2018/12/29 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
中文专业学生自我评价范文
2014/02/06 职场文书
拾金不昧表扬信
2015/01/16 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
施工安全协议书
2016/03/22 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL