📜  在 django 中管理媒体 (1)

📅  最后修改于: 2023-12-03 15:37:19.619000             🧑  作者: Mango

在 Django 中管理媒体

在 Django 中,媒体文件(例如图片、视频、音频)的管理是一个非常重要的功能。本文将介绍如何在 Django 中管理媒体。

配置 media 目录

首先,我们需要配置 media 目录。在 settings.py 文件中,加入以下代码:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

然后,在项目的 urls.py 文件中,加入以下代码:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... 其他的 URL 配置
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

上述代码将 media 目录配置为一个可访问的 URL,以及一个物理路径。

处理上传的媒体文件

上传的媒体文件需要在视图函数中进行处理。以下是一个简单的示例:

from django.shortcuts import render
from django.core.files.storage import FileSystemStorage

def upload(request):
    if request.method == 'POST' and request.FILES['media']:
        media_file = request.FILES['media']
        fs = FileSystemStorage()
        filename = fs.save(media_file.name, media_file)
        uploaded_media_url = fs.url(filename)
        return render(request, 'upload.html', {
            'uploaded_media_url': uploaded_media_url
        })
    return render(request, 'upload.html')

上述代码中的 upload 函数,处理了上传的媒体文件,并将上传的文件名和 URL 渲染到 upload.html 模板中。

在模板中显示媒体文件

最后,我们需要修改模板,以便能够显示上传的媒体文件。以下是一个简单的示例:

{% extends 'base.html' %}

{% block content %}
  <h1>上传媒体文件</h1>
  <form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="media">
    <br><br>
    <input type="submit" value="上传">
  </form>
  {% if uploaded_media_url %}
    <h2>上传成功:</h2>
    <img src="{{ uploaded_media_url }}" alt="上传的图片">
  {% endif %}
{% endblock %}

上述代码中的模板,包含了一个文件上传表单,以及一个显示上传的媒体文件的 img 标签。

结论

在 Django 中管理媒体,需要进行配置、处理和显示。通过以上步骤,我们可以成功地上传、处理和显示媒体文件。