Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2018 11:59:34

ioprst
Зарегистрирован: 2018-03-25
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. Ошибка вызова файла в js

Есть группа файлов:
index.html
page1.html
page1.js
page1.svg
page2.html
page2.js
page2.svg

pageN.html
pageN.js
pageN.svg
Храню все файлы в папке templates

В .js файлах есть вызов файла, который в определенном месте читает данные и возвращает json:

 var xhr = new XMLHttpRequest();
...
function setPost() {
    xhr.open("POST", '/home/ioprst/work/app/tmp/get_data.py', true)
    ...
}
Вызов этого файла осуществляется много, много раз (setInterval(setPost, 100))

Написал на Flask следующее:
 from flask import Flask
from flask import render_template
from flask import send_file
 
app = Flask(__name__)
 
@app.route("/")
def index():
    return send_file('templates/index.html')
 
@app.route("/<fname>", methods=['GET'])
def page(fname):
    return send_file('templates/' + fname)
 
if __name__ == "__main__":
    app.run(host='0.0.0.0')

html, svg, js Flask вроде бы возвращает без проблема (200).
Но когда в js код доходит до вызова скрипта py, в консоль вылетает ошибка:
“POST /home/ioprst/work/app/tmp/get_data.py HTTP/1.1” 404 -
Хотя файл по указанному пути существует, проверил.

Подскажите, пожалуйста, в чем может быть проблема.

(Случайно не в тот раздел залил)

Отредактировано ioprst (Ноя. 7, 2018 08:29:13)

Офлайн

#2 Ноя. 7, 2018 09:37:09

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1742
Репутация: +  52  -
Профиль   Отправить e-mail  

Flask. Ошибка вызова файла в js

может потому что шлете ГЕТ а файл вызывает ПОСТ?
И почему бы просто не написать функцию в самом фласке и отказался от дергания файлов js ?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Ноя. 13, 2018 12:29:23

ioprst
Зарегистрирован: 2018-03-25
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. Ошибка вызова файла в js

ZerG, не совсем. Просто не описал для Flask как обработать запрос js.
Решено:

 xhr.open("POST", '/get-data', true)
 from get_data import get_data
 
@app.route('/get-data', methods=['POST'])
def get():
    data = request.get_data().decode('utf-8')
    return get_data(data)

Отредактировано ioprst (Ноя. 13, 2018 12:31:58)

Офлайн

#4 Ноя. 13, 2018 19:36:24

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1742
Репутация: +  52  -
Профиль   Отправить e-mail  

Flask. Ошибка вызова файла в js

Все же заинтриговали

И почему бы просто не написать функцию в самом фласке и отказался от дергания файлов js ?

Почему такая структура? Чисто из любопытства.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Ноя. 15, 2018 15:45:37

ioprst
Зарегистрирован: 2018-03-25
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. Ошибка вызова файла в js

ZerG,
1) JS управляет простой анимацией SVG (на мой взгляд там это довольно удобно через Element.setAttribute(), get…).
2) JS каждый раз разный (генерируется) => менять каждый раз метод фласка совсем не подходит.

Отредактировано ioprst (Ноя. 15, 2018 15:46:28)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version