默认情况下,Django' runserver
命令会在更改python 或模板文件时自动重新加载服务器。
是否可以将Django配置为将其文件监视扩展到其他目录或文件集,例如静态服务的JavaScript或CSS文件(在开发期间)?
这在这种情况下很有用:Django应用程序在启动时读取一组静态文本文件,我希望服务器在更改时重新读取它们,而不必添加此特定功能 - 只需重启会很好。
我是否需要开始干预(或延伸)django/utils/autoreload.py
?
答案 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
然后您的服务器将看到文件中的所有更改。