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共享引用(多个变量引用)示例代码
Dec 04 Python
独特的python循环语句
Nov 20 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
python破解zip加密文件的方法
May 31 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
Python Selenium异常处理的实例分析
Feb 28 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开发中常用的字符串操作函数
2011/02/08 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
移动端界面的适配
2017/01/11 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
小程序实现多列选择器
2019/02/15 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python正则抓取网易新闻的方法示例
2017/04/21 Python
django定期执行任务(实例讲解)
2017/11/03 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
高三自我评价
2014/02/01 职场文书
决心书范文
2014/03/11 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
办公用房租赁协议书
2014/11/29 职场文书
陕西导游词
2015/02/04 职场文书
冰雪公主观后感
2015/06/16 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android