2016-02-25 72 views
2

這個錯誤是什麼意思?我正在導入from django.shortcuts import render, Http404, HttpResponseRedirect ,但爲什麼可以使用HttpResponseRedirect?我讀了追蹤,但什麼也沒有......有用這裏 我的代碼異常必須是舊式類或派生自BaseException,而不是HttpResponseRedirect

@login_required 
def read(request, id): 
    try: 
     next = request.GET.get('next', None) 
     notification = Notification.objects.get(id=id) 
     if notification.recipient == request.user: 
      notification.read = True 
      notification.save() 
      if next is not None: 
       return HttpResponseRedirect(next) 
      else: 
       return HttpResponseRedirect(reverse("notifications_all")) 
     else: 
      raise Http404 
    except: 
     raise HttpResponseRedirect(reverse("notifications_all")) 

我不明白是什麼錯誤意味着,可有人向我解釋,我做錯了什麼?

回答

4

在這一行:

except: 
    raise HttpResponseRedirect(reverse("notifications_all")) 

回溯是告訴你,你不能raise HttpResponseRedirect(...)因爲這不是已經從BaseException繼承了Exception

你可能想要做的是在這裏使用return,或者替代地使用404代替?

+0

啊,哈謝謝 – winixxee

+0

順便說一下,你介意考慮看看這個stackoverflow.com/questions/35478137/...我一直在努力爭取一段時間。 – winixxee

+0

我給它一個鏡頭。我認爲Traceback會讓你失望,因爲消息傳遞不是太豐富。一般來說,你應該更仔細地閱讀Tracebacks,並且我的意思是,整個事情。在發生錯誤的應用程序中查找位置。 Python有美麗而有用的回溯。 – erewok

1

HttpResponseRedirect不是一個例外,而是一個返回重定向的django函數。

因爲它可能會造成混淆,您可能需要使用渲染來代替:?

from django.shortcuts import redirect 

... 

    if next is not None: 
     return redirect(next) 
    else: 
     return redirect(reverse("notifications_all")) 
+0

啊哈,謝謝阿維亞 – winixxee

+0

順便問一下,你介意看看這個嗎?http://stackoverflow.com/questions/35478137/value-too-long-for-type-character-varying100-recently-切換數據庫迪我一直在努力這一段時間... – winixxee

+0

嘿。我在MySQL上,對不起 –

相關問題