Django Rest Framework: без модели - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над созданием RESTAPI с использованием DRF (Django Rest Framework). API просто получает хэндл твиттера пользователя и возвращает его твиттер-данные.

Здесь я не использую модель, потому что она не требуется.

Должен ли я использовать здесь сериализатор? Если так, то почему? Теперь я могу вернуть данные без использования сериализатора. Более того, Мой API не доступен для просмотра в Интернете. Как мне сделать его доступным для просмотра в Интернете: это одна из лучших функций DRF.

Edit: 1

Я использую функции в представлениях.

@api_view(['GET'])
@csrf_exempt
def getdetails(request):

    call the twitter api
    receive the data
    return HttpResponse(JsonResponse( {'data': {'twitter_id':id,'tweets':count,'Followers':followers,'following':count_follow}}))

В браузере я просто вижу такие данные JSON.

{"data": {"twitter_id": 352525, "tweets": 121, "Followers": 1008, "follow": 281}}

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать Serializer для результата

class SampleSerializer(<b>serializers.Serializer</b>):
    field1 = serializers.CharField()
    field2 = serializers.IntegerField()
    # ... other fields

Использование

my_data = {
    "field1": "my sample",
    "field2": 123456
}

my_serializer = SampleSerializer(data=my_data)
my_serializer.is_valid(True)
data = my_serializer.data

Вы получите сериализованные данные в переменной data (вы можете использовать my_serializer.data напрямую)

Должен ли я использовать здесь сериализатор?

Вам решать, потому что, если вы хотите показать ответ JSON без каких-либо изменений из API Twitter, вы можете обойтись без сериализатора DRF. И если вы хотите отформатировать JSON, мой ответ поможет вам

Мой API не доступен для просмотра в Интернете. Как мне сделать его доступным для просмотра в Интернете?

Возможно, вы следовали неправильной процедуре. Во всяком случае, мы не можем сказать больше об этом, не увидев ваши фрагменты кода

Update-1

<b>from rest_framework.response import Response</b>


@api_view(['GET'])
@csrf_exempt
def getdetails(request):
    call the twitter  api
    <b>twitter_api = get_response_from_twitter()  # Json response
    return Response(data=twitter_api)</b>
...