Django Rest - Как получить более одной записи из API и передать их все в l oop хотя бы в шаблоне? - PullRequest
0 голосов
/ 11 июля 2020

Большинство обучающих программ, которые я нашел, были посвящены созданию API-интерфейсов, а не использованию существующих. Я знаю, что упускаю какую-то важную важную вещь. Не могли бы вы указать мне на это?

Я хочу получать от API OMDB несколько обращений после публикации заголовка для поиска. Мой текущий код в views.py выглядит так:

class MoviesList(APIView):

    def get(self, APIView):
        movies = Movie.objects.all()
        serializer = MovieSerializer(movies, many=True)
        return Response(serializer.data)

    def post(self, request):

        title = request.POST.get("Title")

        api_key = "111111"
        url = f"http://www.omdbapi.com/?t={title}&type=movie&apikey={api_key}"
        response = requests.get(url)

        serializer = MovieSerializer(data=response.json())
        if serializer.is_valid():
            serializer.save()
            movie_details = {
                'title': response.json()['Title'],
                'genre': response.json()['Genre'],
                'plot': response.json()['Plot'],
                'year': response.json()['Year'],
                'runtime': response.json()['Runtime'],
            }
            return render(request, 'movie_database/results.html', movie_details)
        else:
            print(serializer.errors)
            print("Something went wrong.")

И он работает. С помощью этого кода я получаю один результат и могу передать его в свой шаблон. И используйте такие значения, как «title» и «genre».

Но я знаю, что, изменив «url» t = {title} на s = {title}, я могу получить 10 результатов (я тестировал его в браузере вручную, и он работает).

РЕДАКТИРОВАТЬ:

Когда я меняю эту букву «t» на «s», я получаю эту ошибку:

AssertionError at /MoviesList/

Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`

Как я можно использовать это и l oop через них в моем шаблоне? После того, как я искал ответ более 1 часа, я знаю, что мой подход basi c неверен, но я не могу найти подходящий прямо сейчас.

Спасибо.

1 Ответ

0 голосов
/ 11 июля 2020

Пожалуйста, проверьте эту документацию на l oop список в шаблонах.

Плюс, почему вы получаете APIView в методе get!

...