Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2020 22:18:25

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

Добрый день,

Поднял сервер flask (waitress), создал файл flserv.py, папки static и templates, в templates положил страницу index.html, в static положил картинки, style.css, jquery-3.4.1.js (это чтоб не нужно было c интернета подгружать его), main.js - файл со всеми моими скриптами. Сервер с waitress успешно запускается, отображает страницу, картинки, стили, но ни один js не отрабатывает. Даже просто создал кнопку при нажатии которой вылетает alert и даже это не работает. Все пути прописал и много раз уже менял, пробовал все варианты, читал stackoverflow…но не работает. Почему?

Офлайн

#2 Апрель 7, 2020 23:44:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Javascript и flask

Dessan
Даже просто создал кнопку при нажатии которой вылетает alert и даже это не работает.
Начни со страницы.
Прямо в неё встрой alert() без подгрузки js-файла.
Если не срабатывает, используй не alert(), а изменение цвета фона
 <script>document.body.style.backgroundColor = "red";</script>
Если сработало, то открой исходник страницы в браузере и там перейди по ссылке на скрипт main.js, чтобы он тоже в браузере открылся.
Если открывается, то сделай тестовый скрипт test.js
 document.body.style.backgroundColor = "red";
и подключи его в шаблон как файл.



Офлайн

#3 Апрель 7, 2020 23:54:53

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

Надо было мне вообще начать с чтения ошибок консоли, а не с поиска в интернете. Консоль ругалась на знак “$”. Как раз убрал весь jquery и чистый javascript отрабатывает отлично с подгрузкой js - файла. Как мне подключить jquery?

Спасибо за ответ!

Офлайн

#4 Апрель 8, 2020 00:24:36

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

Нашёл проблему…надо было ссылку на скаченный jquery поместить над ссылку исполнительно скрипта main.js и все стало работать.

Офлайн

#5 Апрель 8, 2020 12:42:57

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

Новая трудность.

Принимаем Get запросы сервером и обрабатываем их, но при этом содержимое веб страницы не обновляется самостоятельно. Я не понимаю, где происходить должна обработка Get запросов - в серверном файле питона или уже на странице html?

 from flask import Flask, render_template, request
from waitress import serve
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/', methods=['GET', 'POST']) #  
def index():
	if request.method == 'GET':
		username = request.args.get('username', '')
		password = request.args.get('password', '')
		print(username)
		print(password)
		
	return render_template("index.html", my_string="it works!", my_list=[0,1,2,3,4,5], username = username, password = password)
if __name__ == "__main__":
    app.debug = True 
    serve(app, host='192.168.0.103', port=5000)

 <p>My string: {{my_string}}</p>
<p>Value from the list: {{my_list[3]}}</p>
<div id="log">Login:<div id="pass">0</div>here</div>
<script>
	setInterval(function(){
		
		$("#pass").html("<p>{{password}}</p>");
		console.log("{{password}}")
	}, 5000);
</script>
То что не изменяется (my_string, my_list) - отображается верно, а пароль вообще не выводит. setInterval я уже как вариант добавил но и с ним не работает. По задумке на сервер должно приходить порядка 15 get запросов в минуту с данными в виде чисел и букв, все это обрабатывается и выводится на web содержимом сервера flask.

Отредактировано Dessan (Апрель 8, 2020 12:46:22)

Офлайн

#6 Апрель 8, 2020 18:46:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Javascript и flask

Сделай шаблон без скрипта. Выведи пароль просто в шаблоне через {{password}}.



Офлайн

#7 Апрель 9, 2020 12:06:25

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

В том то и дело, что не выводится, ошибок не выдает. Я с одного компа на другой компьютер, где установлен сервер, отсылаю get запрос. И вот на тот комп с которого отправляю get запрос возвращается все содержимое страницы и там -то видно, что содержимое password вставлено в нужный тег, а на стороне сервера просто ничего нет.

Офлайн

#8 Апрель 9, 2020 14:25:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Javascript и flask

Dessan
И вот на тот комп с которого отправляю get запрос возвращается все содержимое страницы и там -то видно, что содержимое password вставлено в нужный тег
То есть страница выводится с паролем?

Dessan
а на стороне сервера просто ничего нет
На какой стороне сервера? Что имеется в виду?



Офлайн

#9 Апрель 12, 2020 22:38:12

Dessan
Зарегистрирован: 2019-10-16
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Javascript и flask

Я не знаю как ещё объяснить. Есть компьютер 1 и на нём стоит сервер питона с flask, waitress и html страницей. У сервера адрес 192.168.0.103:5000. Есть компьютер 2, который находится в локальной сети с компьютером 1 через роутер. С компьютера 2 отправляем get запрос

 Get http://192.168.0.103:5000/?username=py.user&password=12345
на сервер компьютера 1 и в response на компьютере 2 видим содержимое страницы сервера вместе с вставленными значениями username и password в нудных html тегах, а на компьютере 1 (сервере) мы не видим вставленные на странице html в нужных местах тегов username и password, хотя в консоле сервера компьютера 1 видим полностью наш запрос, а в html страницу сервера ничего не приходит. Понятней я уже не смогу объяснить. И вот я хочу узнать как мне это исправить

Офлайн

#10 Апрель 13, 2020 01:59:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Javascript и flask

Dessan
и в response на компьютере 2 видим содержимое страницы сервера вместе с вставленными значениями username и password в нудных html тегах
Если бы оно не сработало, ты бы ничего не увидел на компьютере, пославшем запрос.

Dessan
а на компьютере 1 (сервере) мы не видим вставленные на странице html в нужных местах тегов username и password
Так а где ты их смотришь?

Dessan
хотя в консоле сервера компьютера 1 видим полностью наш запрос, а в html страницу сервера ничего не приходит
В какую html-страницу, где она у тебя открыта?

Всё срабатывает. Просто ты не понимаешь, что страница генерируется каждый раз при каждом запросе от каждого клиента. Ты даже на одном клиенте при каждом запросе от него по одному и тому же адресу получаешь заново сгенерированную страницу. Можешь даже время проставлять в странице, чтобы понять это опытным путём. И естественно, даже один клиент сам себе не может ничего передать между своими же страницами, потому что они всегда заново сгенерированы, даже если они выглядят вообще идентично.

Нет хранящейся страницы, html-шаблон только хранит информацию о том, как Flask'у сгенерировать страницу. Flask через себя пропускает текст шаблона и переданную в запросе информацию, склеивает это всё воедино и получает новый текст с подставленными значениями, который затем выдаёт в ответе клиенту. А клиент получает этот сгенерированный текст и думает, что ему страницу определённую выдали, которую он запрашивал.



Отредактировано py.user.next (Апрель 13, 2020 02:02:24)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version