我想从我的 Web 目录的根目录后面动态地提供文件。目前,我正在静态提供所有文件,我这样做只是为了包含我的 javascript 和 css 文件。我意识到这可能很愚蠢,但我无法以任何其他方式提供文件!
所以,我想动态地提供文件,而用户不能仅通过使用 url 在其他时间访问。
我的设置
ADMIN_MEDIA_PREFIX = '/media/'
MEDIA_ROOT = os.path.join( APP_DIR, 'site_media' )
MEDIA_URL = 'http://localhost:8000/site_media/'
我的网址
( r'^site_media/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.MEDIA_ROOT } )
谢谢!
最佳答案
“动态”是什么意思?你想要实现什么目标?您想控制对文件的访问吗?
如果你想运行一些 Django View 来决定是否允许用户访问文件,你可以使用 sendfile。有关如何设置正确 header 的代码,请参阅以下代码片段:http://djangosnippets.org/snippets/2226/
你的网络服务器也需要支持这个 header ,至少我使用过的 apache 和 nginx 是这样的。
您还需要考虑如何存储和分发文件,因为运行网络服务器的服务器需要访问这些文件。这将取决于您的设置。
关于Django:阻止直接访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901339/