【问题标题】:Django weird urlpattern caching issueDjango奇怪的urlpattern缓存问题
【发布时间】:2013-07-19 10:17:42
【问题描述】:

我遇到的问题是,当我在我的根 urls.py 文件中注释掉一个 urlpattern 并通过终止进程并触摸我的 index.fcgi 文件来重新启动服务器(在 Hostgator 共享主机上使用 fastCGI)时,我按预期得到 404 错误(因为 url 不再匹配),但是当 Django 处理 404.html 模板并发送返回它时,它只是没有静态文件或任何东西的裸 HTML。

但是,当我尝试任何其他 URL 时,除了那些与我注释掉的 urlpatterns 匹配的 URL(当然,与当前活动模式匹配的那些除外)时,我会得到一个具有所有正确 CSS 的完全呈现的 404 页面。

所有静态文件当前都位于 ~/public_html/ 中,因为这显然是网络服务器(我无法控制)寻找它们的地方。

我只是想不通为什么 Django(或 Web 服务器)在一种情况下能够找到静态文件,而在另一种情况下却不能......

提前感谢大家提出的任何想法。

【问题讨论】:

  • 愚蠢的问题:你清除了浏览器的缓存吗?无论如何,你得到的 404 页面中的 HTML 是什么?
  • 是的。没运气。我还注意到,当这种情况发生时,它会产生两个 python 进程,而不是一个。
  • 你的网络服务器配置是什么?
  • 它与 Hostgator 共享主机。我只知道它使用 fastCGI。

标签: django


【解决方案1】:

只是为了确保...您知道至少有两个不同的 404 页面,一个是 Web 服务器在 Web 服务器配置中未定义 URL 时返回的,另一个是由 Django 返回的,当webserver 将请求交给 Django,但 urls.py 没有定义匹配 URL 的模式?

如果您知道这一点,并且浏览器中显示的带有和不带有静态内容的 404 页面都由 Django 提供,我建议您查看浏览器发送的获取静态内容的请求。您可以在 Chrome、Safari、Firefox 的调试控制台中执行此操作。在那里,您将能够看到请求(可能是 URL)有什么不同,以便网络服务器返回一种情况的静态内容,而不是另一种情况。

【讨论】:

  • 我认为该请求至少达到了 django,因为它在返回之前在 404.html 模板中执行模板处理。例如,假设我有一个匹配 ^404/ 的 urlpattern,然后我将其注释掉。现在,如果我转到那个 url,我会收到 404 错误,但没有任何 CSS。如果我转到任何其他不存在的 url,我会得到完全呈现的 404 页面。无论如何,我会在早上尝试并回复你。感谢您的帮助
  • 我刚在我的平板电脑上试了一下,一切正常……一定是一些奇怪的缓存。到时候我会把它标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2013-01-11
  • 2016-08-17
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多