Django忽略对/project/urls.py的更改

时间:2011-06-08 16:07:36

标签: django

我正在开始研究一个成熟的Django项目并注意到一些不寻常的事情。当我编辑urls.py时 - 无论是在项目级别还是以下级别 - Django都会忽略我的更改。

调试已启用,因此当我获得404 Django打印它尝试的所有URL模式时。在此之前,我在进行更改之前会看到中的网址格式

同样,无论我是编辑/project/urls.py还是/project/sub/urls.py。可以肯定的是,正确包含了子目录urls.py。

我专注于项目级别urls.py,以防万一。

我可以对urls.py进行小的更新或删除其所有内容。 404调试信息显示旧的URL模式。

就好像Django正在查看这些urls.py文件的缓存版本。我该怎么办?

1 个答案:

答案 0 :(得分:11)

借助deafult,Django的开发服务器(通过runserver管理命令访问)将密切关注您的代码,并在发生变化时重新加载。如果您正在使用任何其他服务器(包括Django的testserver命令),那几乎肯定不是这样。

通常,服务器会在启动时加载应用程序的源。需要重新加载才能获得代码的最新副本。如果您正在使用带有mod_wsgi的Apache(可能是Django应用程序最常用的生产服务器),那么在源代码树的某个地方,您将拥有一个wsgi应用程序文件。按照惯例,它们具有.wsgi扩展名,但它可以命名为任何名称。这个文件是Apache用来加载你的源文件和mod_wsgi(仅限守护进程模式)的一个有用功能是触摸(更改修改日期)这个文件足以强制服务器加载源代码。如果您的应用程序有一个wsgi文件,您可以编辑,这样做并重新上传代码就足够了。该文件可能包含行application = django.core.handlers.wsgi.WSGIHandler()或类似的内容 - 这可能会对您有所帮助

如果您无权访问或找不到任何此类文件,则需要将更新后的源提供给服务器的管理员,并要求他们更新并重新加载源。在没有更多信息的情况下为您提供更多建议是非常棘手的 - 也许您可以向服务器管理员询问更多信息,以便我们可以提供帮助吗?

==更新==

我已经检查了您提供的链接上的响应标头,看起来您正在使用nginx来为该网站提供服务。这可能只是另一台服务器前面的负载均衡器,所以我仍然建议您从SysAdmin请求更多信息。