如何在 Django 模板中使用媒体文件?

在这里,我将向您展示如何在 django 模板中使用媒体文件。
您将学习 django 在模板中加载媒体文件。
我一步一步地简单解释了如何在 Django 模板中显示媒体文件。
这篇文章将为您提供如何在 Django 模板中加载媒体文件的简单示例。

在本教程中,您将学习如何在支持 Python 的 Django 模板中使用媒体文件。您的 Web 应用程序经常加载图像、视频等媒体文件,因为它们可以增强用户体验。

默认情况下,Django 使用MEDIA_ROOTMEDIA_URL设置在本地提供存储文件。

在这里,我简单地逐步解释了如何在 Django 模板中使用媒体文件的示例。

第 1 步:创建项目

在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:

 django-admin startproject example 

第 2 步:创建应用

现在我们将创建一个名为core的应用程序来存储帖子名称列表。我们故意保持基本的东西。使用Control+c停止本地服务器并使用startapp命令创建这个新应用程序。

 python3 manage.py startapp core 

第 3 步:更新 setting.py

然后在我们的settings.py文件中更新INSTALLED_APPS以通知 Django 有关该应用程序的信息。
settings.py

....
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'core',
]

import os

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

MEDIA_URL = 'media/'

example/media/images目录中,放置图像文件。假设您在 images 目录中添加了3 个图像

第 4 步:提供媒体文件

在本节中,我们需要核心应用程序中的urls.py文件,但 Django 不会使用 startapp 命令为我们创建一个文件。使用文本编辑器创建core/urls.py并粘贴下面的代码。
core/urls.py

from django.urls import path
from . import views

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

urlpatterns = [
    path('', views.index, name='index'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

第 5 步:检索媒体文件

core/views.py

import os
from django.conf import settings
from django.shortcuts import render
from django.templatetags.static import static

# Create your views here.
def index(request):
    path = settings.MEDIA_ROOT
    img_list = os.listdir(path + '/images')
    context = {'images' : img_list}
    return render(request, "core/index.html", context)

第 6 步:在模板中加载媒体文件

接下来,然后使用您的文本编辑器创建新的模板文件:core/index.html 文件和添加:
core/index.html

{% if images %}
    {% for image in images %}
        <img src="{{ MEDIA_URL }}images/{{ image }}" alt="{{ image }}">
    {% endfor %}
{% else %}
    <p>No image available.</p>
{% endif %}

我希望它能帮助你……

发表评论

邮箱地址不会被公开。 必填项已用*标注