及彼模型實例通過PK是示例代碼:在Django中如何避免樣板代碼爲視圖中
def someview(request):
try:
instance = SomeModel.objects.get(id=request.GET.get('id'))
except SomeModel.DoesNotExist:
instance = None
except ValueError:
# This error may occur if user manually enter invalid (non-integer)
# id value (intentionally or not) in a browser address bar, e.g.
# http://example.com/?id=2_foo instead of http://example.com/?id=2
# This raises ValueError: invalid literal for int() with base 10: '2_'
instance = None
...
有沒有獲得通過PK模型實例沒有在寫這個樣板代碼的最佳實踐和過度?我應該在Django中使用一些預定義的快捷方式嗎?還是僅使用我自己的?
我確信我應該使用Django的DetailView或SingleObjectMixin但奇怪的是它不會從我的例子https://github.com/django/django/blob/master/django/views/generic/detail.py#L50
處理ValueError異常是它意味着我必須指定的URL配置PK kwarg正確的整數的正則表達式?好的,可能。但是如果我從請求querystring中獲取pk呢?
UPD我有特殊的邏輯來處理實例,它是無或不是。
如果對象不存在,你想要做什麼?提高404或只是做一些其他的邏輯與實例='None' –
這正是基於類的視圖閃耀的地方。 – 2014-03-24 14:44:10
只是爲了確保您會注意到,您可以覆蓋get_object方法。 – aisbaa