在 Django 中上传媒体文件
在这篇文章中,我们将看一下有关媒体文件的简短介绍,并看看我们如何在 Django 项目中操作媒体文件。
在 Django 中使用 MEDIA_ROOT 和 MEDIA_URL 上传媒体
默认情况下,Django 有一种处理本地文件系统中文件的标准方法。
如果您查看过 Django 项目中的设置,您可能会看到 MEDIA_ROOT 和 MEDIA_URL,而在另一个项目中,您可能会看到您可以访问 MEDIA_URL 上的文件。
所以现在我们将介绍如何在您的 Django 项目中设置它。
例如,我们有一个 Demo 项目,在其中,我们有一个文档应用程序。 如果我们查看里面的模型,我们会看到带有标题和文件字段的文档模型。
在文件字段中,我们的 upload_to 关键字参数等于文档,这意味着文件上传的位置。 我们想将此对象的所有文件放在文档的子文件夹中。
代码:
from django.db import models
class Document(models.Model):
title = models.CharField(max_length=128,blank=True)
file = models.FileField(upload_to='documents', max_length=200)
因此,我们需要开始配置的第一件事是打开我们的 settings.pys。
如果您位于设置的顶部,您将看到基于或常量。 这触及了我们项目的根源,并允许我们设置一个基础路径。
代码:
BASE_DIR = Path(__file__).resolve().parent.parent
如果我们跳到 setting.py 文件的底部,我们将从 MEDIA_ROOT 开始并设置 os.path.join
。 然后我们将加入 BASE_DIR 作为媒体,这意味着我们将在项目中定义媒体文件夹,我们将在其中上传所有文件。
接下来,我们将设置 MEDIA_URL,以便 Django 可以正确构建我们的 URL。 这也意味着媒体将是我们在域名末尾看到的第一个内容,用于访问用户上传的内容。
代码:
# Manage media
import os
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
MEDIA_URL='/media/'
我们需要设置的下一件事是我们的 URL 路由,以便在 urls.py 文件的帮助下在我们的本地机器上正确地查看这些。 因此,我们需要打开我们的 urls.py,调用 static()
方法,并使用我们对 MEDIA_URL 和 MEDIA_ROOT 的设置。
我们需要一个静态文件; 然后,urls.py 文件将知道在哪里构建正确的 URL 以获取本地。
静态方法正确生成 URL。 我们需要导入我们的设置,因为这个静态方法的有趣之处在于它只能在本地工作,而不是在生产环境中工作。
这意味着当您在生产中将调试设置为 False 时,这将不起作用。 您需要正确配置您使用的网络服务器才能正确地为您的媒体文件夹提供服务。
代码:
from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
我们需要做的最后一件事是在我们项目的根目录下创建一个媒体文件夹,并通过在我们的媒体文件夹中创建一个文档文件夹来处理它。
如果我们转到我们的 Django 管理面板并尝试上传新图像,那么我们可以上传文件。 上传后,当您在文档文件夹中查看此图像时,您会看到它已正确上传。
我们现在很好地介绍了在媒体根上配置媒体 URL。 当用户将文件上传到您的系统时,后端知道将它们放在哪里以及将它们拉到哪里。
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。
避免在 Django 中创建重复对象
发布时间:2023/05/04 浏览次数:71 分类:Python
-
本文的主要目的是了解 Django 中的 get_or_create() 方法。 它是一种用于避免查询集中出现冗余字段的方法。