首页 > 解决方案 > 更改模板 (HTML) 文件时 Django 开发服务器重新启动

问题描述

我在 Django 3.2 中开始了一个新项目。与我习惯的不同,在我的开发机器上,当我更改模板文件(HTML 文件)时,runserver 会自动重新启动。我不习惯这种情况 - 通常这些总是从磁盘加载,并且更改不需要重新启动。重新启动很快但不是即时的,我宁愿有旧的行为。我检查了更改日志runserver文档,但我不确定这是否真的是最近的更改、设置,或者我是否忽略了某些东西。

有人知道吗?在我的 docker 容器中服务器的输出下方,您可以看到对 HTML 文件的更改触发了重新启动...

web_1      | /src/templates/_nav.html changed, reloading.
web_1      | Watching for file changes with StatReloader
web_1      | Performing system checks...
web_1      | 
web_1      | System check identified no issues (0 silenced).
web_1      | April 27, 2021 - 14:16:17
web_1      | Django version 3.2, using settings 'demo.settings'
web_1      | Starting development server at http://0.0.0.0:8000/
web_1      | Quit the server with CONTROL-C.

标签: djangodevelopment-environment

解决方案


这是 Django 中的一个错误,有一张票 #32744,它已在版本 3.2.4(发行说明)中修复。因此,最简单的解决方案是将 Django 升级到更新版本:

python -m pip install -U Django

或者,如果由于某种原因您不能这样做,那么您需要修复问题的间接原因,即较新的 Django 项目使用pathlib.Path而较旧的项目使用字符串来指示模板目录等,因此解决方案是升级/更新您要使用的设置pathlib.Path。一般来说,更新以下设置应该对您有所帮助(您可能还需要在使用的地方更改其他设置BASE_DIR):

from pathlib import Path


BASE_DIR = Path(__file__).resolve().parent.parent


# showing only relevant parts of the TEMPLATES setting
TEMPLATES = [
    {
        'DIRS': [BASE_DIR / 'templates'] # I don't show the other keys, but don't remove them!
    },
]

推荐阅读