我可以配置Django runserver在静态或非python文件更改时重新加载吗?

时间:2014-10-15 16:29:48

标签: python django

默认情况下,Django' runserver命令会在更改python 或模板文件时自动重新加载服务器。

是否可以将Django配置为将其文件监视扩展到其他目录或文件集,例如静态服务的JavaScript或CSS文件(在开发期间)

这在这种情况下很有用:Django应用程序在启动时读取一组静态文本文件,我希望服务器在更改时重新读取它们,而不必添加此特定功能 - 只需重启会很好。

我是否需要开始干预(或延伸)django/utils/autoreload.py

4 个答案:

答案 0 :(得分:0)

默认情况下,每次请求都会从磁盘读取文件,因此无需重新启动任何内容。

有一个缓存模板加载器,但默认情况下它被禁用。有关详细信息,请参阅documentation

答案 1 :(得分:0)

正如您对问题的评论所说,Django总是在每个请求中从文件系统中提取文件,因此它们不会被缓存。

但是,如果浏览器发送If-Modified-Since标头,则会检查文件的mtime(django.views.static),这就是为什么您可能会看到304 Not Modified。

无论如何,只是禁用浏览器缓存可以满足您的需求吗?

答案 2 :(得分:0)

静态文件自动从磁盘提供,因此无需重新加载开发服务器。

但是你的浏览器有它自己的缓存,并且保留了一些静态文件...... 要重新加载它,请使用以下快捷方式:

Ctrl + Shift + r  要么 Ctrl + f5

如果你在Mac上使用 CMD按钮而不是 ctrl

答案 3 :(得分:0)

无需重新加载服务器,但有时需要复制静态文件才能对服务器可见。

在开发时运行collectstatic,将最近编辑的静态文件(如javascript)从一个目录复制到服务器使用的目录。

这是一个技巧:

  • 链接源目录代表目标(将“覆盖”目标目录)
  • 或以循环方式运行:

python manage.py collectstatic --noinput

然后您的服务器将看到文件中的所有更改。