Flask запускает скрипт Python с «OnClick»: ложная активация - PullRequest
0 голосов
/ 10 ноября 2019

В моем app.py я добавил функцию Python (для отслеживания событий), например:

app = flask.Flask(__name__)
app.jinja_env.globals.update(track_event=track_event)

def track_event(category, label, action):
   do="something"

В своем HTML-коде я добавил его так:

<a href="somewebsite.web" 
       class="button button-rounded tright button-large topmargin-sm"
       onclick="{{ track_event(category='outbound',action='stackoverflow', 
       label='somewebsite.web') }}"
>

Вкл. на этой стороне я предлагаю листинг и поэтому добавляю этот вид HTML, отрубленный несколько раз с разными URL-адресами (вместо somewebsite.web).

Вот моя проблема: вместо того, чтобы активировать «onclick», каждый раз, когда я загружаюНа веб-сайте все события onclick сразу же активируются после завершения загрузки браузера.

Функции работают, как и ожидалось, но их не следует вызывать, если кто-то на самом деле не нажмет на. У кого-нибудь был подобный опыт?

Моя ошибка в Python или HTML?

1 Ответ

1 голос
/ 11 ноября 2019

В комментарии вы упомянули, что в отрендеренном HTML у вас было onclick="None". Проблема в том, что ваша функция

def track_event(category, label, action):
    do="something"

ничего не возвращает. Джинджа собирается сделать то, что вы говорите, и вернуть возвращаемое значение этой функции в шаблон. Если вы return None (что неявно: если вы никогда не возвращаете явно, вы return None по умолчанию).

...