繁体   English   中英

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

[英]Can I configure Django runserver to reload when static or non-python files are changed?

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

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

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

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

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

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

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

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

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

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

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

Ctrl + Shift + rCtrl + f5

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

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

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

这是一个技巧:

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

python manage.py collectstatic --noinput

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM