python - 防止直接访问 Django 中的媒体文件
问题描述
我为我的网址添加了静态路径(Django 2.2 和 python 3.6.9),
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
但是,我想防止未经身份验证的访问媒体文件。
解决方案
您可以让 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。
推荐阅读
- cplex - 如何在 CPLEX OPL 中编写平均约束?
- c# - 讲述人未按预期读取 TextBlock 中的文本。仅在选定的 TextBox 中
- python - 是否可以在 python 中的函数上使用模式匹配?比如,一个可以响应多个调用的函数
- php - 如何更新数据库中的 json 字段 laravel?
- kafka-consumer-api - 具有相同组 ID kafka 的同一应用程序的多个实例
- r - 使用 facet_wrap 时如何标准化刻度线
- python - lines+=line / TypeError:只能将str(不是“字节”)连接到str
- xslt - 如何在每个循环中选择前一个兄弟姐妹?
- android - 如何增加 Android 通知提醒的持续时间
- python - 添加无值总是给出 0