2009-12-18 57 views
0

我在用的Satchmo配置的flatpages問題。我之前使用過它們,在一個純粹的Django應用程序中,但現在它不起作用,當我嘗試進入flatpage配置的站點時返回301 http錯誤。Django的的Satchmo和的flatpages問題

我所做的配置它:

  • 添加的中間件「django.contrib.flatpages.middleware.FlatpageFallbackMiddleware」到MIDDLEWARE_CLASSES如在列表的最後,
  • 在管理模塊配置示例頁面。

什麼簡單的文檔說有關的flatpages配置。

我感到很無助。不知道我怎麼能調試這個問題。對此有何想法?

當然和幫助表示讚賞。

感謝Peter的建議我設法將問題縮小到我的urls.py文件中,用於satchmo商店。

的URL模式只有一個入口:

(r'', 'django.views.generic.simple.redirect_to', {'url' : '/shop/'}), 

此版本不工作,並與另外的flatpages干擾。但是從MIDDLEWARE_CLASSES禁用的flatpages和增加它的urls.py像下面的作品片段:

(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'), 
(r'', 'django.views.generic.simple.redirect_to', {'url' : '/shop/'}), 

然而接下來的問題是與重定向從//shop/。使用上面的配置會導致無限循環。

也許你知道這種行爲的原因(重定向重寫flatpage),也許你可以建議一些工作的解決方案,以解決這個問題或應該做什麼請求/

回答

1

它返回301?這是頁面永久移動(HttpResponsePermanentRedirect),並沒有在flatpages目錄中的引用,所以我不認爲它來自那裏。事實上,在所有的標準1.1.1版本中,只有大約5個參考HttpResponsePermanentRedirect

可能的方法:

  1. 註釋掉的flatpages中間件,看看誤差變化(我打賭它不會)。
  2. 試着改變你的中間件類的順序,看看事情的變化。

當提出一個問題,這樣它更好地得到非常具體通過展示從settings.py(或其他)的適用部分確切的代碼,並通過給其他像精確的URL和urls.py模式你正在嘗試匹配。

更新:

OK,一些隨機的想法:

  1. 模式(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),將匹配任何東西。之後的任何圖案將永遠不會被看到。

  2. flatpages通過直接調用不起作用,它在中間件中起到了魔力。它會查找404個響應(Page Not Found),然後查看該表是否存在該路徑。如果是這樣,它會調用一個呈現頁面的視圖等等。如果找不到匹配項,它讓404繼續執行中間件處理。

  3. 模式(r'', 'django.views.generic.simple.redirect_to', {'url' : '/shop/'}),將匹配任何東西(我只是測試它)。如果您想匹配空路徑,請使用r('^$', etc.)。這是你的無限循環的來源。

如果你是新手,正則表達式Django的urls.py文件可能看起來像F * cking魔術。我建議從一開始就簡單地開始並添加一條規則。做一些快速測試,以確保新的規則a)匹配你想要它匹配的東西,和b)不匹配它不應該的東西。特別是,確保文件後面出現的某些規則仍然可以訪問。在這種情況下,他們不會是本應該引起紅旗的。

+0

我編輯了我的問題,也許你知道解決方案? – 2009-12-19 16:12:36