在 Django 中使用静态文件和媒体文件

2023-04-06 00:00:00 文件 静态 媒体文件

在 Django 中,我们可以在页面中使用静态文件和媒体文件来丰富页面内容和展示。静态文件通常包括 CSS 样式文件、JavaScript 脚本文件以及图片等,而媒体文件则包括图片、视频、音频等。
1. 静态文件处理
首先,我们需要在应用程序的根目录中创建一个名为 static 的文件夹,用于存放静态文件。然后,在 settings.py 文件中设置静态文件目录:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

这样,Django 就能够找到静态文件所在的文件夹。
在 HTML 文件中,可以使用以下方式引用静态文件:

<!-- 引用 CSS 文件 -->
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<!-- 引用 JavaScript 文件 -->
<script src="{% static 'js/main.js' %}"></script>
<!-- 引用图片 -->
<img src="{% static 'img/pidancode.png' %}" alt="pidancode">

其中,{% static %} 模板标签用于动态生成静态文件的 URL。
2. 媒体文件处理
和静态文件类似,我们需要在应用程序的根目录中创建一个名为 media 的文件夹,用于存放媒体文件。
然后,在 settings.py 文件中设置媒体文件目录:

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

这样,Django 就能够找到媒体文件所在的文件夹。
在 models.py 文件中,可以使用以下方式定义一个媒体文件字段:

from django.db import models
class Post(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(unique=True)
    image = models.ImageField(upload_to='images/')
    content = models.TextField()

其中,upload_to 参数指定了媒体文件上传到的路径。
在视图函数中,可以使用以下方式读取一个媒体文件:

from django.shortcuts import render
from django.conf import settings
from django.core.files.storage import FileSystemStorage
def index(request):
    image_url = settings.MEDIA_URL + 'images/pidancode.png'
    return render(request, 'index.html', {'image_url': image_url})

在 HTML 文件中,可以使用以下方式引用上面读取的媒体文件:

<img src="{{ image_url }}" alt="pidancode">

这样就能够成功地读取并展示一个媒体文件了。

相关文章