オブジェクトが 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
関数を定義しました。
サーバーを実行し、ブラウザーを開き、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 ページ
を発生させます。
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