GET запрос в Flask - отправить данные из python бэкэнда клиенту - PullRequest
0 голосов
/ 07 августа 2020

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

Я пробовал использовать «return render_template» и «redirect», но это не сработало

Мне сказали, что я должен выполнить запрос GET, но я не уверен, как это сделать, я знаю, как отправлять данные от клиента к серверу, но я никогда не делал от сервера к клиенту и не нашел как это сделать с помощью Flask.

@app.route('/createdocument', methods=['POST', 'GET'])
#@login_required
def create_document():
    playlists = get_playlists()
    if request.method == "POST":
        request_data = str(request.data.decode('UTF-8'))
        genre = get_header_genre(request_data)
        parsed_data = parse_request(request_data)           
        playlist_names = get_parsed_playlists(parsed_data)
        if genre == "playlist":
            #make_playlist_doc(playlist_names, genre)
            print("playlist option not ready yet")
        elif genre == "socan":
            name = make_socan_doc(playlist_names, genre)
            return render_template("tools/downloadfile.html", document=name)
        else:
            print("other request:")
            print(str(request.data.decode('UTF-8')))
    if request.method == "GET":
        ########################## Something I guess but I don't know what
   return render_template("tools/createdocument.html", playlists=playlists)

Я нашел это в поисках запроса GET

function httpGetAsync(theUrl, callback)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
            callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); 
    xmlHttp.send(null);
}

Если я хорошо понимаю, я должен но /createdocument в theUrl, но что мне поставить обратный звонок?

1 Ответ

0 голосов
/ 07 августа 2020

Я думаю, вы на правильном пути с подходом return_template. Что именно не работает?

Для клиента - можете ли вы вместо этого использовать ax ios или fetch ; в наши дни это довольно распространенные библиотеки для получения запросов GET от клиента. как часть этого запроса, но возвращается в произвольное время позже), рассмотрите что-то вроде настройки веб-сокета

Вот сервер веб-сокетов на основе Flask это должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...