Django: 如何重启Web服务器以便应用源代码中的更改

3

我使用Eclipse和PyDev开发Django Web应用程序。我可以使用以下命令启动Web服务器:

python manage.py runserver

然后我可以在本地浏览器中测试我的Web应用程序。但是每次更改源代码后,我都必须重新启动Eclipse,以便在我的Web应用程序中应用这些更改。

我猜我必须以某种方式重新启动Web服务器,以便再次解释我的源码,以便应用我的更改。但是我该怎么做呢?我找不到任何命令来执行此操作。


你尝试过在代码更改后按F5吗?这对我很有效。无论是使用Eclipse还是不使用。 - Jeune
2个回答

6
当Python代码发生更改时,Django dev服务器会自动重启。如果您使用noreload选项运行它,则可能不会发生这种情况。
./manage.py runserver --noreload
另一种情况是当文件更改未被Django使用时,服务器不会自动重新加载。例如,如果您的admin.py中有语法错误,Django将不使用它。更改它不会重新启动服务器。 请注意,如果您使用eclipse调试,则必须使用noreload运行django,因为存在一个错误,该错误不会重新启动实例,而是启动一个新实例。

2
首先,在Eclipse中将项目配置为Django项目(如果尚未这样做)。 (右键单击项目,选择PyDev->设置为Django项目)。
其次,单击顶部的绿色运行按钮,然后选择“运行配置”。 选择PyDev Django图标,然后点击顶部的新启动配置按钮。 输入项目名称(假设为testproject),并为主模块输入"${workspace_loc:testproject}/${DJANGO_MANAGE_LOCATION}"。
在参数选项卡中,输入“runserver 0.0.0.0:8000 --noreload”以使您的服务器对外部计算机可见,或者输入“runserver --noreload”以仅在本地计算机上访问,并将工作目录更改为"${workspace_loc:}"。
单击应用程序,然后您就可以开始了!
在Eclipse内运行时,它应该如下所示: enter image description here

你告诉我应该传递“--noreaload”,但Llian Lliev却说完全相反的话!或者是我理解错了什么? - Pascal Klein
1
当您在Eclipse中作为PyDev运行配置运行时,需要使用“--noreload”,因为当runserver以自动重新加载模式运行时,它会启动另一个进程,而PyDev无法控制(并且不会捕获控制台窗口中的输出)。 - Adam Morris
1
这意味着,当您进行更改时,您需要在 Eclipse 中重新启动应用程序(按下红色方块)。然后您就可以在控制台窗口中看到该应用正在运行。 - Adam Morris
谢谢您的最后一条评论:我只需要点击红色的“终止”按钮!!!然后再次运行,我的新源代码就会应用到我的应用程序中!非常感谢。 - Pascal Klein
只有在调试模式下才应使用“--noreload”选项。如果你不在调试模式下运行,那么Adam提到的单独进程运行出现的问题就会出现。在正常模式下没有“noreload”,也可以正常运行它。 离题: 使用开发服务器来服务所有内容(django和媒体)非常慢,我建议您使用真实的Web服务器来服务媒体文件。 - Ilian Iliev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接