Django FileResponse
最后修改于 2023 年 1 月 9 日
Django FileResponse 教程演示了如何在 Django 中使用 FileResponse 发送文件。
Django
Django 是一个高级 Python Web 框架。它鼓励快速开发和清晰、实用的设计。Django 的主要目标是简化复杂、数据库驱动的网站的创建。
Django 由 Django Software Foundation 维护。
Django FileResponse
FileResponse 是 StreamingHttpResponse 的一个子类,它针对二进制文件进行了优化。文件会被自动关闭。
from django.http import FileResponse
response = FileResponse(open('myfile.png', 'rb'))
FileResponse 接受任何具有二进制内容的类文件对象。
Django FileResponse 示例
在下面的示例中,我们创建了一个 Django 应用程序,用于向客户端发送文件。该文件是一个 JPEG 图像,位于项目根目录下的 images 目录中。
$ mkdir fileresponse $ cd fileresponse $ mkdir src images $ cd src
我们创建项目以及 images 和 src 子目录。然后我们进入 src 目录。
$ django-admin startproject fileresponse .
我们在 src 目录中创建一个新的 Django 项目。
注意:如果提供了可选的目标目录,Django 将使用该现有目录作为项目目录。如果省略,Django 会根据项目名称创建一个新目录。我们使用点号 (.) 在当前工作目录中创建项目。
$ django-admin startapp sendfile
我们创建一个新的应用。sendfile 应用包含将图像发送到客户端的功能。
$ cd .. $ pwd /c/Users/Jano/Documents/pyprogs/django/fileresponse
我们显示当前工作目录。
$ tree /f
src
│ db.sqlite3
│ manage.py
│
├───fileresponse
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
├───images
│ bojnice.jpg
│
└───sendfile
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ views.py
│ __init__.py
│
└───migrations
__init__.py
这是项目目录的内容。
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sendfile',
]
...
在 setting.py 文件中,我们将 sendfile 组件添加到已安装的应用中。
from django.contrib import admin
from django.urls import path
from sendfile.views import send_file
urlpatterns = [
path('admin/', admin.site.urls),
path('', send_file, name='send_file'),
]
我们为根页面添加了一个新路由;它调用 sendfile 组件中的 send_file 函数。
from django.http import FileResponse
def send_file(response):
img = open('images/bojnice.jpg', 'rb')
response = FileResponse(img)
return response
在 send_file 中,我们读取图像并将其作为 FileResponse 对象返回给客户端。
$ python manage.py runserver
我们运行服务器并导航到 http://127.0.0.1:8000/。我们应该能在浏览器中看到该图像。
在本文中,我们演示了如何在 Django 中发送文件。