首页 > 解决方案 > 防止直接访问 Django 中的媒体文件

问题描述

我为我的网址添加了静态路径(Django 2.2 和 python 3.6.9),

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但是,我想防止未经身份验证的访问媒体文件。

标签: pythondjango

解决方案


您可以让 django 提供媒体文件,但这并不高效。

这篇博文

from django.conf.urls import patterns, include, url
from django.contrib.auth.decorators import login_required
from django.views.static import serve
from django.conf import settings


@login_required
def protected_serve(request, path, document_root=None, show_indexes=False):
    return serve(request, path, document_root, show_indexes)

urlpatterns = patterns('',
    url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], protected_serve, {'document_root': settings.MEDIA_ROOT}),
)

更好的解决方案是使用NGINX的 XSendfile。


推荐阅读