django 丟擲 404 錯誤

2021-09-09 05:20:37 字數 1327 閱讀 3841

return render(request, 'polls/detail.html', )這裡有個新原則。如果指定問題 id 所對應的問題不存在,這個檢視就會丟擲乙個http404異常。

嘗試用get()函式獲取乙個物件,如果不存在就丟擲http404錯誤也是乙個普遍的流程。django 也提供了乙個快捷函式,下面是修改後的詳情detail()檢視**:

from django.shortcuts import get_object_or_404, render

from .models import question

# ...

def detail(request, question_id):

question = get_object_or_404(question, pk=question_id)

return render(request, 'polls/detail.html', )

設計哲學

為什麼我們使用輔助函式get_object_or_404()而不是自己捕獲objectdoesnotexist異常呢?還有,為什麼模型 api 不直接丟擲objectdoesnotexist而是丟擲http404呢?

因為這樣做會增加模型層和檢視層的耦合性。指導 django 設計的最重要的思想之一就是要保證鬆散耦合。一些受控的耦合將會被包含在django.shortcuts模組中。

也有get_list_or_404()函式,工作原理和get_object_or_404()一樣,除了get()函式被換成了filter()函式。如果列表為空的話會丟擲http404異常。

為django配置404和502錯誤頁面

django的403 404 500錯誤自定義頁面的配置 要實現標題的功能,總共分三步 1.建立html錯誤頁 2.配置settings 3.編寫檢視 4.配置url 環境 django1.10 django1.11 python2.7 python3 django admin.py startpr...

404錯誤總結

最近執行程式總是跑404,讓筆者十分鬱悶,在多次失敗中總結了一下個人經驗 第一種 路徑錯誤。這種大概是最常見的,也是初學者最容易犯的,一般是 struts 中沒有配置路徑,或者 url 中書寫錯誤。第二種 jar包重複或無效。這個比較容易解決,先刪除目前工程下的jar包,然後直接複製成功專案中的ja...

404錯誤含義

不用懷疑,你的頁免丟失了。那麼,404 除了代表你所要瀏覽的頁面丟失外,你可知它的產生原理?不僅如此,在龐大的網際網路中除了404還有哪些http狀態碼又分別代表著什麼?正如上面所述,404是一種標準的http返回 官方稱其為http狀態碼,用來表示網頁伺服器http的響應狀態。由於 日誌通常會記錄...