配置Django在DEBUG为False的情况下仍能访问static和media

文章讲述了如何在Django生产环境中,当DEBUG=False时,通过配置UWSGI作为启动服务器,确保静态资源和媒体文件的访问需要用户验证。作者提到在URLpatterns中使用serve视图,以拦截静态资源请求并进行权限检查。
摘要由CSDN通过智能技术生成

近两天收到一个需求,说在地址栏直接访问静态资源的时候需要添加一个用户验证登录权限,如下访问

正常开发模式下DEBUG为True的时候用个请求中间件是可以拦截到这个请求的是因为DEBUG为True的时候静态资源是使用的django自带的静态资源服务器.

但是生产环境DEBUG肯定要设置成False的 那么要访问静态资源肯定就需要一个web服务器类似apache,nginx等,但是静态资源经过服务器后直接就返回给客户端了,项目中间件就没办法拦截到静态资源请求路由并且做登录判定(技术有限有大佬能处理这种情况的欢迎指导).

所以最终方案是用uwsgi做启动服务器,静态资源static,media路由走应用程序.

修改如下:

#urls.py

from django.views.static import serve  #django1.8以下建议使用 


# from django.contrib.staticfiles.views import serve    django1.8以上建议使用

urlpatterns = [
...

url(r"^static/(?P<path>.*)$", serve, {"document_root":settings.STATIC_ROOT},name='static'),
 
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT} ,name="media"),

# static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 一定注释
...

]

结论:这样配置在debug为Flase的情况下 并且不使用任何静态资源服务器也能访问静态资源 并且拦截到静态资源请求,由于我只是个演示小项目不考虑性能负载等等,真正的商业项目还是得结合业务情况用nginx等配置静态资源用其他的办法做权限管理.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值