Django:阻止直接访问文件

bdd*_*bdd 4 django

我想从我的web目录的根目录动态地提供文件.目前我正在静态提供所有文件,我只是为了包含我的javascripts和css文件.我意识到这可能是愚蠢的,但我不能以任何其他方式提供文件!

所以,我想动态地提供文件,而不是用户只能通过使用网址在其他时间访问.

我的设置

ADMIN_MEDIA_PREFIX = '/media/'
MEDIA_ROOT = os.path.join( APP_DIR, 'site_media' )
MEDIA_URL = 'http://localhost:8000/site_media/'
Run Code Online (Sandbox Code Playgroud)

我的网址

( r'^site_media/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.MEDIA_ROOT } )
Run Code Online (Sandbox Code Playgroud)

谢谢!

knu*_*tin 5

"动态"是什么意思?你想要实现的是什么?您想控制对文件的访问吗?

如果你想运行一些决定是否允许用户访问该文件的Django-view,你可以使用sendfile.有关如何设置正确标头的代码,请参阅以下代码段:http://djangosnippets.org/snippets/2226/

你的网络服务器也需要支持这个标题,至少我和我一起工作的是apache和nginx.

您还需要考虑如何存储和分发文件,因为运行Web服务器的服务器需要访问文件.这取决于您的设置.