如何覆盖django静态文件开发服务器?

时间:2012-05-29 16:45:34

标签: django

我开始使用应用程序'django.contrib.staticfiles'将静态文件收集到我项目的/ static /目录中。

问题是,当我使用django开发服务器(manage.py runserver)时,它会自动提供静态文件。

通常很好,但在我的情况下,我想自己提供这些静态文件。

我想在urls.py文件中输入类似的内容:

urlpatterns += patterns('',
        url('^static/(?P<path>.*)$', myStaticMediaServe,{'document_root': settings.STATIC_ROOT ,'show_indexes': True}),
        )

问题是'django.contrib.staticfiles'应用程序在settings.DEBUG = True时优先使用'/ static /'url:我找不到让Django使用我的'/ static /'urlpattern描述的方法处于调试模式时

如果我从settings.py中删除'django.contrib.staticfiles':我的'/ static /'urlpattern可以正常工作,但我收集了静态文件。

你有想法使用'django.contrib.staticfiles'并通过urlpattern描述使用我自己的静态文件服务器并且有settins.DEBUG = True

2 个答案:

答案 0 :(得分:5)

我发现,默认情况下,django'rowserver'本身,preempts / static / urls:即使使用自定义中间件,也不能强制django将'/ static /'指向你的代码。

我找到的唯一解决方案:对'./manage.py runserver'使用--nostatic选项,然后可以使用自己的url模式和视图来提供静态文件。

答案 1 :(得分:0)

DEBUG设为False。 Django仅在True时提供静态文件。