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操作字符串之rindex()方法的使用
May 19 Python
详解Django通用视图中的函数包装
Jul 21 Python
浅谈Python的垃圾回收机制
Dec 17 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python字符串常用方法
Jun 14 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
python re模块常见用法例举
Mar 01 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
python APScheduler执行定时任务介绍
Apr 19 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如何得到当前页和上一页的地址?
2006/11/27 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
19个Android常用工具类汇总
2014/12/30 PHP
php 使用array函数实现分页
2015/02/13 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
json数据与字符串的相互转化示例
2013/09/18 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
python传递参数方式小结
2015/04/17 Python
python中对_init_的理解及实例解析
2019/10/11 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
如何利用Python 进行边缘检测
2020/10/14 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
婚礼主持词开场白
2014/03/13 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2014年项目工作总结
2014/11/24 职场文书
2014年库房工作总结
2014/11/26 职场文书
鲁冰花观后感
2015/06/10 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS