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

ram*_*am1 6 django

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

调试已启用,因此当我获得404 Django打印它尝试的所有URL模式.从这里我看到了我做出改变之前的URL模式.

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

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

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

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

ada*_*ish 11

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

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

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

==更新==

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

  • 对于Apache部署,最好使用`$ sudo apache2ctl graceful`重新加载最新的配置,而不会干扰当前访问者. (2认同)