如果找不到Django对象,如何继续函数

2024-05-17 13:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检查一个对象是否存在-如果它不存在,我想继续这个函数,不返回404错误。我怎样才能做到这一点?你知道吗

def check(request):
    if request.is_ajax():
        # print('Working') #prints
        id = request.POST.get('id')
        post = Post.objects.get(hash=id)

        obj = get_object_or_404(Post, post=post)
        if obj:
            # do stuff
        else:
            #do something else

上述代码返回:

Not Found: /check/
[22/Jul/2018 01:15:03] "POST /check/ HTTP/1.1" 404 1729

Tags: 对象函数idobjgetifrequestdef
2条回答

如果您经常使用它,那么您可以将它作为函数并保存在助手.py你知道吗

def get_or_none(model, *args, **kwargs):
    try:
        return model.objects.get(*args, **kwargs)
    except model.DoesNotExist:
        return None

把它当作

post = get_or_none(Post, hash=id)
if post:
   #do something
else:
   #do other thing

只需捕获Post.DoesNotExist异常并在异常处理程序中执行其他操作:

def check(request):
    if request.is_ajax():
        id = request.POST.get('id')
        try:
            post = Post.objects.get(hash=id)
            # do stuff
        except Post.DoesNotExist:
            # do something else

相关问题 更多 >