📅  最后修改于: 2023-12-03 15:25:01.686000             🧑  作者: Mango
在 Django 中处理媒体文件是一项重要的任务,这包括图片、音频、视频和其他文件。Django 的 media 这个概念包括它们的 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 中使用 form 和 view的方式是最常见的方法。
以以下视图为例:
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})
在这个视图中,
request.POST
包含提交表单时填写的字段;
request.FILES
包含上传的文件,你可以按需要更改文件内容;
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 并上传和管理媒体文件了。