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的響應狀態。由於 日誌通常會記錄...