オブジェクトが Django に存在するかどうかを確認する

Salman Mehmood 2023年6月20日
オブジェクトが Django に存在するかどうかを確認する

この一般的な問題の説明では、オブジェクトがモデルに存在するかどうかを確認する方法を確認し、例外を処理してユーザーに便利なエラーを表示する方法も学習します。

exists() メソッドを使用して、Django のモデルにオブジェクトが存在するかどうかを確認する

たとえば、Audio_store というモデルがあります。 このクラスには、FileField を含む record フィールドがあります。

class Audio_store(models.Model):
    record = models.FileField(upload_to="documents/")

    class Meta:
        db_tables = "Audia_store"

ここで、何らかの値が存在するかどうかを確認する必要があります。 Django には、オブジェクトが存在するかどうかをチェックする組み込み関数があります。

exists() 関数はさまざまな状況で使用できますが、if 条件で使用します。

views.py ファイルに Audio_get 関数があるとします。この関数では、条件が True または False の場合に HTTP 応答を返します。 機能しているかどうかを見てみましょう。

def Audio_get(request):
    vt = Audio_store.objects.all()
    if vt.exists():
        return HttpResponse("object found")
    else:
        return HttpResponse("object not found")

サーバーを実行する前に、urls.py ファイルに URL を追加したことを確認する必要があります。 URL にアクセスすると、views.py ファイルから定義済みの関数が引き出されます。この例では、Audio_get 関数を定義しました。

URLs Python コード

サーバーを実行し、ブラウザーを開き、Django サーバーが実行されているローカルホストを調べてみましょう。

ブラウザを開く

エラーが発生していないことがわかり、HTTP 応答を受け取りました。

動的 URL から不足しているオブジェクトを処理するには、get_object_or_404 クラスを使用できます。 存在しないオブジェクトを使用しようとすると、ユーザーフレンドリーではない例外が表示されます。

組み込みの Django 例外の代わりに、ユーザー (ページが見つかりません) エラーを表示できます。 有効なエラーになります。 このエラーを使用するために、Django サーバーがオブジェクトを見つけられなかった場合にエラーを発生させるサンプル コードを使用しました。

from .models import Product
from django.shortcuts import render, get_object_or_404


def dynamic_loockup_view(request, id):
    # raise an exception "page not found"
    obj = get_object_or_404(Product, id=id)
    OUR_CONTEXT = {"object": obj}
    return render(request, "products/product_detail.html", OUR_CONTEXT)

404 ページ エラーが発生します。

ページが見つかりませんエラー

これを行うもう 1つの方法は、try ブロック内に配置することです。 この get_object_or_404 クラスのように 404 ページ を生成する Http404 クラスをインポートする必要があります。

from django.http import Http404
from django.shortcuts import render


def dynamic_loockup_view(request, id):
    try:
        obj = Product.objects.get(id=id)
    except Product.DoesNotExist:
        # raise an exception "page not found"
        raise Http404
    OUR_CONTEXT = {"object": obj}
    return render(request, "products/product_detail.html", OUR_CONTEXT)

また、Product またはモデル オブジェクトが存在しない場合、Http404 を使用して 404 ページ を発生させます。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Django Object