Django が JSON を返す
このディスカッションでは、JSON 形式の簡単な紹介を見て、Django の JsonResponse
クラスを使用してデータを JSON 形式に変換します。
JsonResponse
クラスを使用して、Django でデータを JSON 形式に返す
JSON は JavaScript オブジェクト記法とも呼ばれ、単なるデータ表現です。 これは、ほぼすべての API でインターネット全体で広く使用されています。
JSON は、クライアント サイトでデータを送信するのに非常に軽量です。 また、JavaScript との統合も非常に優れています。
JSON は JavaScript の単なるスーパーセットであるため、JavaScript とうまく統合されます。 ほとんどすべての主要な言語には、JSON 文字列をオブジェクトまたはクラスに解析するためのライブラリまたは組み込み機能があります。
Django では、データを JSON 形式で渡すのは非常に簡単です。 それがどのように機能するか見てみましょう。
Profile
モデルを作成することから始めましょう。 このモデルでは、name
、email
、および bio
の 3つのフィールドを作成します。 これらのフィールドは、max_length
が 1000 の CharField
になります。
class Profile(models.Model):
name = models.CharField(max_length=1000)
email = models.CharField(max_length=1000)
bio = models.CharField(max_length=1000)
admin.py
ファイルに Profile
モデルを登録する必要があります。
from .models import Book, Profile
admin.site.register(Book)
admin.site.register(Profile)
新しい URL を作成する必要があるため、この URL にアクセスするたびに views.py
ファイルから json
関数が呼び出されます。
urlpatterns = [
path("admin/", admin.site.urls),
path("json", views.json, name="json"),
]
ここで、json
という新しい関数を作成する必要があります。 まず、JsonResponse
とその他の必要なモジュールをインポートする必要があります。
from .models import Profile
from django.http import JsonResponse
json
関数では、objects.values()
を使用して Profile
オブジェクトから値を取得し、それらをリスト データ型に変換します。
data
変数を作成したら、JSON 応答でデータを返す必要があります。 JsonResponse
クラスで data
変数を渡した後、必ず safe
引数を渡し、False
に等しく設定する必要があります。
def json(request):
data = list(Profile.objects.values())
return JsonResponse(data, safe=False)
モデルを作成するには、移行を行う必要があります。 次のコマンドを使用すると、管理パネルでモデルを表示できます。
python manage.py makemigrations
python manage.py migrate
これですべてが正常に機能するようになりました。このコマンドを使用してサーバーを実行し、何が起こるかを確認してください。
python manage.py runserver
ブラウザを実行し、このアドレス http://127.0.0.1:8000/admin
を管理パネルに移動します。 初めてモデルを開く場合は、右上のボタンを使用してモデルを追加する必要があります。
フィールドに入力したら、このオブジェクトを保存し、http://127.0.0.1:8000/json
から JSON ページに移動する必要があります。
[
{
id: 1,
name: "jeams parker",
email: "exampl@example.com",
bio: "This is the example bio"
}
]
これで、JSON 形式のデータにアクセスできるようになりました。
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