重定向到特定url,而不是Django中的404
我希望将用户发送到特定的URL(“/risking/notyours/”),而不是在下面的代码中执行raise Http404。我试过使用重定向到特定url,而不是Django中的404,django,django-templates,Django,Django Templates,我希望将用户发送到特定的URL(“/risking/notyours/”),而不是在下面的代码中执行raise Http404。我试过使用HttpResponseRedirect和reverse,但似乎什么都没用 建议 代码: get\u object方法应该返回一个模型实例。您不能从那里返回重定向响应 一个选项是引发自定义异常并在dispatch方法中捕获它 from django.shortcuts import redirect class WrongOwner(Exception):
HttpResponseRedirect
和reverse
,但似乎什么都没用
建议
代码:
get\u object
方法应该返回一个模型实例。您不能从那里返回重定向响应
一个选项是引发自定义异常并在dispatch
方法中捕获它
from django.shortcuts import redirect
class WrongOwner(Exception):
pass
class ProspectDelete(LoginRequiredMixin, DeleteView):
...
def dispatch(self, request, *args, **kwargs):
try:
return super(ProspectDelete, self).dispatch(request, *args, **kwargs)
except WrongOwner:
return redirect('/risking/notyours/')
def get_object(self, queryset=None):
""" Hook to ensure object is owned by request.user. """
obj = super(ProspectDelete, self).get_object()
if not obj.owner == self.request.user:
raise WrongOwner
return obj
请注意,返回“此对象不是您的”消息可能不是一个好主意,因为您正在向用户透露对象的存在。
from django.shortcuts import redirect
class WrongOwner(Exception):
pass
class ProspectDelete(LoginRequiredMixin, DeleteView):
...
def dispatch(self, request, *args, **kwargs):
try:
return super(ProspectDelete, self).dispatch(request, *args, **kwargs)
except WrongOwner:
return redirect('/risking/notyours/')
def get_object(self, queryset=None):
""" Hook to ensure object is owned by request.user. """
obj = super(ProspectDelete, self).get_object()
if not obj.owner == self.request.user:
raise WrongOwner
return obj