質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1306閲覧

django REST frameworkでJsonArrayではなくJsonObjectを返したい

akidon0000

総合スコア8

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/22 03:37

現在AWSを使ったAPIの作成を行っています。

GET http://(IPアドレス)/user.json

を行うと

[{"id":1,"name":"tanaka","mail":"T@gmail.com"},{"id":2,"name":"matsuyama","mail":"M@gmail.com"}]

と配列に入った状態で返ってきます。
これを

{{"id":1,"name":"tanaka","mail":"T@gmail.com"},{"id":2,"name":"matsuyama","mail":"M@gmail.com"}}

JsonObjectで返ってきて欲しいです。

ちなみに

GET http://(IPアドレス)/user/1.json

を行うと

{"id":1,"name":"tanaka","mail":"T@gmail.com"}

が返ってきます。

serializers.py

serializers.py

1from rest_framework import serializers 2from polls.models import User 3 4 5class UserSerializer(serializers.ModelSerializer): 6 class Meta: 7 model = User 8 fields = ('id', 'name', 'mail')

views.py

views.py

1from rest_framework import status 2from rest_framework.decorators import api_view 3from rest_framework.response import Response 4 5from polls.models import User 6from polls.serializers import UserSerializer 7 8@api_view(['GET', 'POST']) 9def user_list(request, format=None): 10 11 if request.method == 'GET': 12 #UserをMySQLから全件取得 13 polls = User.objects.all() 14 serializer = UserSerializer(polls, many=True) 15 #Jsonで返してくる 16 17 return Response(serializer.data) 18 19 20 elif request.method == 'POST': 21 serializer = UserSerializer(data=request.data) 22 if serializer.is_valid(): 23 serializer.save() 24 #登録成功するとJsonデータが帰ってくる ##status 200番台は処理が成功した 25 return Response(serializer.data, status=status.HTTP_201_CREATED) 26 return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 27 28@api_view(['GET', 'DELETE']) 29def user_detail(request, pk, format=None): 30 try: 31 polls = User.objects.get(pk=pk) 32 except Snippet.DoesNotExist: 33 return Response(status=status.HTTP_404_NOT_FOUND) 34 35 if request.method == 'GET': 36 serializer = UserSerializer(polls) 37 return Response(serializer.data) 38 39 elif request.method == 'DELETE': 40 snippet.delete() 41 ## HttpResponseをResponseに変更 42 return Response(status=status.HTTP_204_NO_CONTENT)

apps/urls.py

from django.urls import path from rest_framework.urlpatterns import format_suffix_patterns from polls import views urlpatterns = [ path('user/', views.user_list), path('user/<int:pk>/',views.user_detail) ] urlpatterns = format_suffix_patterns(urlpatterns)

models.py

from django.db import models class User(models.Model): #作成時刻を記録 created = models.DateTimeField(auto_now_add=True) #Userの名前を記録 name = models.CharField(max_length=100, blank=True, default='') #Userのemail mail = models.TextField() class Meta: ordering = ('created',)

https://qiita.com/Gattaca/items/419e2a2cf23b6a9f1028
https://qiita.com/Gattaca/items/c51a9fdd6c6357ebe87b
上記のサイトを参考に作成しました

https://teratail.com/questions/156354
上記のサイトをみましたが、よくわかりませんでした。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

attakei

2020/10/22 11:29

> {{"id":1,"name":"tanaka","mail":"T@gmail.com"},{"id":2,"name":"matsuyama","mail":"M@gmail.com"}} このフォーマットはJSONとして正しくないのですが...本当にこの形式で出力したいのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問