📜  媒体 url django - Python (1)

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

媒体 URL in Django - Python

在 Django 中处理媒体文件是一项重要的任务,这包括图片、音频、视频和其他文件。Django 的 media 这个概念包括它们的 URL 和存储在您系统上的实际文件本身。

设置媒体文件的 URL

为了把媒体文件和 URL 建立联系,要先在 Django 项目的 settings.py 文件中设置 MEDIA_URL。

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

下一步是确保文件处理器知道在哪里找到媒体文件。

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

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
上传文件

有许多方法可以上传文件,在 Django 中使用 formview的方式是最常见的方法。

以以下视图为例:

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            instance = MyModel(file_field=request.FILES['file']) //这里 MyModel 是你自己定义的model
            instance.save()
            return redirect('success')
    else:
        form = UploadFileForm()
    return render(request, 'upload.html', {'form': form})

在这个视图中,

  1. request.POST 包含提交表单时填写的字段;

  2. request.FILES 包含上传的文件,你可以按需要更改文件内容;

  3. MyModel.file_field= request.FILES['file'] 存储上传的文件。

显示上传的文件

django.contrib.staticfiles包使您可以在所有继承自TemplateView, View的视图(这包括Django内置的View类,FormView,CreateView等)中方便地使用静态文件。

在template中,您可以这样显示媒体文件:

{% extends "base.html" %}

{% block content %}
    <form enctype="multipart/form-data" method="POST">
        {% csrf_token %}
        <fieldset>
            <legend>Upload File</legend>
            {{ form.as_p }}
        </fieldset>
        <button type="submit" class="btn btn-primary">Submit</button>
    </form>
{% endblock %}

最后,在 Django 后台管理页面中上传和管理文件是一个好习惯,可以减少意外的错误并更轻松地与他人合作。

这就是 Django 中处理媒体文件的基础知识。现在你可以自己在 Django 项目中设置媒体文件 URL 并上传和管理媒体文件了。

参考文献