Django raising 404 with a message

后端 未结 9 1192
有刺的猬
有刺的猬 2020-12-19 05:31

I like to raise 404 with some error message at different places in the script eg: Http404(\"some error msg: %s\" %msg) So, in my urls.py I included:

<         


        
9条回答
  •  南笙
    南笙 (楼主)
    2020-12-19 06:25

    Raise an Http404 exception inside a view. It's usually done when you catch a DoesNotExist exception. For example:

    from django.http import Http404
    
    def article_view(request, slug):
        try:
            entry = Article.objects.get(slug=slug)
        except Article.DoesNotExist:
            raise Http404()
        return render(request, 'news/article.html', {'article': entry, })
    

    Even better, use get_object_or_404 shortcut:

    from django.shortcuts import get_object_or_404
    
    def article_view(request):
        article = get_object_or_404(MyModel, pk=1)
        return render(request, 'news/article.html', {'article': entry, })
    

    If you'd like to customize the default 404 Page not found response, put your own template called 404.html to the templates folder.

提交回复
热议问题