python中Django文件上传方法详解

 更新时间:2020年08月05日 07:53:11   作者:爱喝马黛茶的安东尼  
在本篇文章里小编给大家整理了一篇关于python中Django文件上传方法,有兴趣的朋友们可以学习下。

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视频教程》

zz.png

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'))
]

效果图

xx.png

知识点扩展:

最简单的文件下载功能的实现

将文件流放入HttpResponse对象即可,如

def file_download(request):
 # do something...
 with open('file_name.txt') as f:
  c = f.read()
 return HttpResponse(c)

到此这篇关于python中Django文件上传方法详解的文章就介绍到这了,更多相关Django文件上传方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    这篇文章主要介绍了实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250的过程,文中的环境基于Windows操作系统,需要的朋友可以参考下
    2016-01-01
  • Pycharm中Python环境配置常见问题解析

    Pycharm中Python环境配置常见问题解析

    这篇文章主要介绍了Pycharm中Python环境配置常见问题,结合图文形式分析了Pycharm中Python环境配置模块路径问题、虚拟环境创建、配置远程服务器、连接数据库等常见问题与操作方法,需要的朋友可以参考下
    2020-01-01
  • UI自动化定位常用实现方法代码示例

    UI自动化定位常用实现方法代码示例

    这篇文章主要介绍了UI自动化定位常用实现方法代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python显示天气预报

    python显示天气预报

    这篇文章主要介绍了python显示天气预报功能,python2.7运行通过,需要的朋友可以参考下
    2014-03-03
  • python3读取csv和xlsx文件的实例

    python3读取csv和xlsx文件的实例

    今天小编就为大家分享一篇python3读取csv和xlsx文件的实例,具有很好的参考价值,希望对的大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python 框架 FastAPI详解

    Python 框架 FastAPI详解

    FastAPI 是一个现代、快速且高性能的 Web 框架,用于 Python 3.6+,基于 Python 类型提示构建 API,它通过 Starlette 和 Pydantic 优化,支持多种 HTTP 方法、异步编程、数据验证和自动生成交互式文档,FastAPI 适合快速开发高性能、可扩展的 Web 服务
    2024-11-11
  • Python远程视频监控程序的实例代码

    Python远程视频监控程序的实例代码

    这篇文章主要介绍了Python远程视频监控程序的实例代码,需要的朋友可以参考下
    2019-05-05
  • 2022最新Python日志库logging总结

    2022最新Python日志库logging总结

    这篇文章主要介绍了2022最新Python日志库logging总结,Python logging 库设计的真的非常灵活,如果有特殊的需要还可以在这个基础的 logging 库上进行改进,创建新的 Handler 类解决实际开发中的问题,需要的朋友可以参考下
    2022-05-05
  • 使用Python编写提取日志中的中文的脚本的方法

    使用Python编写提取日志中的中文的脚本的方法

    这篇文章主要介绍了使用Python编写提取日志中的中文的脚本的方法,该脚本包括过滤重复的字符行等功能,需要的朋友可以参考下
    2015-04-04
  • python lxml中etree的简单应用

    python lxml中etree的简单应用

    这篇文章主要介绍了python lxml中etree的简单应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论