zoukankan      html  css  js  c++  java
  • 121-django中的Http404处理

    看三种写法:

    【1】最原始的,不处理404

    def one_note(request, pk):
        date_and_tag()
        pk_note = MyNote.objects.get(id=pk)
        all_comment = pk_note.comment_set.all()
        context = {'pk_note': pk_note, 'date_index': list(set(date_list)),
                   'tag_index': list(set(tag_list)), 'all_comment': all_comment}
        return render(request, 'one_note.html', context)
    

      

    【2】使用try--except

    def one_note(request, pk):
        date_and_tag()
        try:
            pk_note = MyNote.objects.get(id=pk)
        except MyNote.DoesNotExist:
            raise Http404("MyNote does not exist")
    # 如果try通过,则跳过except,继续执行下面的内容 all_comment = pk_note.comment_set.all() context = {'pk_note': pk_note, 'date_index': list(set(date_list)), 'tag_index': list(set(tag_list)), 'all_comment': all_comment} return render(request, 'one_note.html', context)

      

    【3】使用快捷方式:get_object_or_404()

    def one_note(request, pk):
        date_and_tag()
        # pk_note = MyNote.objects.get(id=pk)
        pk_note = get_object_or_404(MyNote, id=pk)
        all_comment = pk_note.comment_set.all()
        context = {'pk_note': pk_note, 'date_index': list(set(date_list)),
                   'tag_index': list(set(tag_list)), 'all_comment': all_comment}
        return render(request, 'one_note.html', context)
    

      

    django官方文档(version:3.0)的解释是:

    为什么我们使用辅助函数get_object_or_404() 而不是Object.DoesNotExist在较高级别上自动捕获异常,或者使用API抛出Http404(更高级)代替Object.DoesNotExist

    因为那样会将模型层耦合到视图层。

    Django的首要设计目标之一是保持松散耦合。django.shortcuts模块中引入了一些受控耦合。观察以下引用:

     

    from django.shortcuts import render, get_object_or_404
    from .models import MyNote, Comment
    from .forms import NoteForm
    from django.http import HttpResponseRedirect, Http404
    from django.urls import reverse
    

      

     

  • 相关阅读:
    upc组队赛16 Melody【签到水】
    upc组队赛16 WTMGB【模拟】
    upc组队赛15 Supreme Number【打表】
    upc组队赛15 Lattice's basics in digital electronics【模拟】
    upc组队赛15 Made In Heaven【第K短路 A*】
    upc组队赛14 As rich as Crassus【扩展中国剩余定理】
    upc组队赛14 Floating-Point Hazard【求导】
    upc组队赛14 Communication【并查集+floyd /Tarjan】
    upc组队赛14 Bus stop【签到水】
    2018/12/7 数据库事务和分布式事务
  • 原文地址:https://www.cnblogs.com/lzhshn/p/13516711.html
Copyright © 2011-2022 走看看