利用DetailView的get_object方法引发Http404,如果对象不存在于查询集存在异常。除了覆盖get_object方法之外,您还可以在视图的get方法中捕获异常:

解决思路

from django.http import Http404
from django.views.generic import DetailView
from django.shortcuts import redirect

class MyDetailView(DetailView):

    def get(self, request, *args, **kwargs):
        try:
            self.object = self.get_object()
        except Http404:
            # redirect here
            return redirect(url)
        context = self.get_context_data(object=self.object)
        return self.render_to_response(context)

或者是

from django.http import Http404
from django.shortcuts import redirect
from django.urls import reverse
from django.views.generic import DetailView


class MyDetailView(DetailView):
    def get(self, request, *args, **kwargs):
        try:
            return super().get(request, *args, **kwargs)
        except Http404:
            return redirect(reverse('my_list_view_name'))


本文地址: http://chenxm.cc/article/1198.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
上一篇: SQL查询某时间范围内的数据
下一篇: ps -ef |grep 详解
发表评论

还没有留言,还不快点抢沙发?