Передача "контекста" обратно в представление 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, поэтому прошу прощения, если мой код оскорбителен. Я пытаюсь научиться и хочу сделать это правильно, поэтому любая помощь будет оценена по достоинству!