Django media static外部访问Django中的图片设置教程

  

下面是“Django media static外部访问Django中的图片设置教程”的完整攻略,共包含两条示例说明。

1. 创建media以及static文件夹

在Django项目的根目录下,创建一个名为mediastatic的文件夹。其中,media文件夹用于存放用户上传的媒体文件,例如用户上传的图片、音频、视频等;而static文件夹用于存放静态文件,例如CSS、JavaScript和图片等。

2. 在settings.py中进行相关配置

在Django项目的settings.py文件中,进行相关配置。主要有以下两步:

2.1 配置static

settings.py文件中,添加如下代码:

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

其中,STATIC_URL是访问静态文件时的URL路径,STATICFILES_DIRS指明了Django在哪些目录下寻找静态文件。

2.2 配置media

settings.py文件中,继续添加如下代码:

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

其中,MEDIA_URL是访问媒体文件时的URL路径,MEDIA_ROOT指明了Django在哪个目录下存储媒体文件。

3. 编写视图函数

在Django项目中,图片的访问是通过视图函数来实现的。下面是一个视图函数的示例:

from django.http import HttpResponse
from django.conf import settings
from django.shortcuts import get_object_or_404
from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import csrf_exempt
import os

@never_cache
@csrf_exempt
def get_image(request, path):
    file_path = os.path.join(settings.MEDIA_ROOT, path)
    with open(file_path, 'rb') as f:
        return HttpResponse(f.read(), content_type="image/jpeg")

这个视图函数的作用是读取指定路径下的图片文件,并返回给客户端。

4. 在urls.py文件中进行url配置

最后一步是在urls.py文件中进行URL配置。示例如下:

from django.conf.urls import url
from .views import get_image

urlpatterns = [
    url(r'^media/(?P<path>.*)$', get_image),
]

其中,(^media/(?P<path>.*)$)表示匹配以media/开头的url路径,并将path参数传递给视图函数。

经过以上步骤的设置,我们就可以外部访问Django中的图片了。下面是两个示例:

示例一

假设我们有一张名为example.jpg的图片,存储在/media/images目录下。则可以通过以下URL访问该图片:

http://example.com/media/images/example.jpg

示例二

假设我们有一篇文章,其中插入了一张名为example.jpg的图片。则可以通过以下代码来显示该图片:

<img src="{% url 'get_image' path='/images/example.jpg' %}" alt="example">

其中,path='/images/example.jpg'表示图片存储的路径。{% url 'get_image' %}则是生成访问图片的URL。

相关文章