Передача "контекста" обратно в представление Django

Я использую API (Spotify) для получения результатов поиска (плейлисты и их данные....Name,Url,Owner,Description) и отображения их на моем сайте.

Я мог бы просто напрямую вывести результаты на сайт в виде HTML-таблицы, однако мне нужно выполнить Regex для получения значений из описания (Email или Instagram, если они указаны). Я создал класс PlaylistObject для хранения каждого возвращенного результата плейлиста, а также моих регексов для поиска электронной почты и имени пользователя. Я не храню это значение в базе данных, потому что оно временное и не требует длительного хранения.

Проблема, с которой я сталкиваюсь, связана с пагинацией. Как я настроил программу, она должна вызывать вызов функции Spotify API, которая получает поиск и назначает его моему списку PlaylistObjects, каждый раз при перезагрузке страницы. Из-за пагинации она перезагружается при каждом изменении страницы. Пагинация работает, и программа функционирует "как положено", но я знаю, что должен быть лучший подход. Я отправляю список плейлистов через контекстный словарь и затем считываю их в html в таблицу, если бы был способ отправить тот же самый точный список плейлистов обратно в представление при нажатии на новую страницу с пагинацией, это позволило бы мне не переделывать поиск по api и воссоздавать Spotify List.

    def results(request):

    if request.method == "GET":
        # searchquery
        query = request.GET.get("q")
        # search parameter. This will eventually be a value returned from user input textbox
        search_type = "playlist"
        CONST_LIMIT = 50  # ~50 is the max search at a time allowed by spotify
        offset = 0
        CONST_OFFSET_LIMIT = 1000  # 1000 is max spotify allows
        # create a list to add all the json objects that are searched to
        searchObjList = []
        spotify = SpotifyAPI(settings.CLIENT_ID, settings.CLIENT_SECRET)

        # since not every playlist will have the data we want, we want to run it as many times as allowed so we have enough
        # data to show the user
        # offset starts at 0 and goes to 1000 which is the limit spotify allows
        while offset < CONST_OFFSET_LIMIT:

            searchandCopySpotify(
                request,
                spotify,
                query,
                search_type,
                CONST_LIMIT,
                offset,
                searchObjList,
            )
            # increase the search paremeter to get the next 50 results
            offset += 50

        # if search returned results create a csv file of resutls
        if searchObjList:
            createSearchCSV(request, searchObjList, query)
            # return the list of playlists and search query
        context = {
            "PlaylistList": createPagination(request, searchObjList),
            "searchquery": query,
        }

    #if it didnt work send an empty list
    else:
        context = {
            "PlaylistList": "",
            "searchquery": query,
        }

    return render(request, "spotify/results.html", context)

Я новичок в Django, поэтому прошу прощения, если мой код оскорбителен. Я пытаюсь научиться и хочу сделать это правильно, поэтому любая помощь будет оценена по достоинству!

Вернуться на верх