95103


rest_frameworkで、データベースに連携しない形で、任意のJSONレスポンスを返しますが、json.dumps関数によるインデントを含めると、正しく表示できません。

リクエスト

[code]

    http://127.0.0.1:8000/api/version
    
[/code]

返送したいレスポンス

[code]

    {
      'version':'ver 1.2'
    }
    
[/code]

## ソースコード

/(apiアプリケーション名)/urls.py

[code]

    from django.urls import path, include
    from .views import VersionView
    
    urlpatterns = [
        path('version', VersionView,name='version'),
    ]
    
    
[/code]

/(apiアプリケーション名)/views.py

[code]

    import json
    
    from django.shortcuts import render
    
    def VersionView(request, *args,**kwargs):
        params = {
            'version':
                json.dumps({'version':'ver 1.2'},indent=2)
        }
        return render(request,"api/version.html",params)
    
[/code]

/(apiアプリケーション名)/templates/(apiアプリケーション名)/version.html

[code]

    {{version}}
    
[/code]

## 結果

PostManでの結果

[code]

    GET:http://127.0.0.1:8000/api/version
    
    [Pretty]タブ
    {
      &quot;version&quot;: &quot;ver 1.2&quot;
    }
    [Preview]タブ
    { "version": "ver 1.2" }
    
[/code]

通常、Prettyタブの結果で、インデント生成されたJSONデータが表示されるのですが、上記のようになってしまいます。


CC BY-SA 4.0
2023-06-05T06:23:01.580
95101
2023-06-05T12:19:01.900
2023-06-05T12:19:01.900
3060
32891
question
python3 json django-rest-framework
Django REST API の返送で、json.dumps関数で生成した文字列が意図通りにならない


(質問が書かれてないので感想です)

<https://docs.djangoproject.com/en/4.2/ref/request-response/#jsonresponse-
objects> で

[code]

    return JsonResponse({'version':'ver 1.2'}, json_dumps_params={'indent': 2})
    
[/code]

と返すべきでしょう


CC BY-SA 4.0
2023-06-05T12:10:38.907
95103
2023-06-05T12:10:38.907
12274
95101
answer