2011-04-04 47 views
0

如果用戶爲某個站點輸入一個隨機URL(http:// testurl/cdsdfsd),如何發現頁面未找到。我在那裏有任何更改settings.py或如何處理這個..使用Django找不到頁面信息

回答

2

django tutorialdocs有部分您應該閱讀。

您需要覆蓋默認的404視圖。

在URLconf:

handler404 = 'mysite.views.my_custom_404_view' 
0

默認情況下,Django是呈現404.html模板。在找到模板的任何位置創建該文件。例如。你可以在你的Django項目根創建templates目錄,然後將其添加到TEMPLATE_DIRSsettings.py

import os 
BASE_DIR = os.path.abspath(os.path.dirname(__file__)) 

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates/'), 
) 

另一種解決方案是編寫您自己的中間件,這將檢查是否有404響應,以及什麼決定顯示。如果您希望有一個回退解決方案(如靜態頁面)或與響應一起玩,這尤其有用在網站上執行搜索並顯示可能的選項。

這是來自django.contrib.flatpages的示例中間件。它會檢查url是否在數據庫中定義,如果是這樣 - 返回此頁面,否則傳遞並返回默認響應。

class FlatpageFallbackMiddleware(object): 
    def process_response(self, request, response): 
     if response.status_code != 404: 
      return response # No need to check for a flatpage for non-404 responses. 
     try: 
      return flatpage(request, request.path_info) 
      # Return the original response if any errors happened. Because this 
      # is a middleware, we can't assume the errors will be caught elsewhere. 
     except Http404: 
      return response 
     except: 
      if settings.DEBUG: 
       raise 
      return response