операции с одним и несколькими кнопками onclick на python

#javascript #python #django #flask #bottle

Вопрос:

Как запустить операцию , если кнопка нажата в первый раз, но при повторном нажатии выполните дополнительные действия.

 if request.method == 'POST': # if i press a button on the client side, (obj_list) return something like this [0.3, 2.32, 1.22] passed here through ajax (no problem here)  x = 1  obj_db = []  for obj_items in obj_list:   should_sum = False  while not should_sum:  x *= obj_items  #return only two decimal numbers after float number   new_obj_num = round(obj_total, 2)  obj_db.append(new_obj_num)  print('stored value : ', obj_db)  if object_selected:  obj_db  = obj_items  else:  should_sum = True  

теперь, когда я нажимаю кнопку, мне нужны данные obj_list для умножения и сохранения результатов в obj_db(что я и сделал). Но когда я нажимаю снова (со стороны клиента), мне нужно умножить, но суммировать с предыдущими сохраненными результатами. Есть Какие-Нибудь Предложения ??!

Комментарии:

1. Привет! Не могли бы вы поделиться еще немного кодом? Прямо сейчас я вижу, что ваш файл js выполняет запрос post, но в вашем файле python вы пытаетесь прочитать форму, но, не зная, как вы загружаете параметр forms в запрос, трудно понять, что не так.

2. @Gabo только что поделился кодом , нет никаких проблем с получением данных через почтовый запрос . я обновил вопрос сейчас

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

4. @Gabo у вас есть пример кода для этого , проблема здесь не в счетчике , если дважды нажать кнопку , нужно умножить и суммировать с возвращенными предыдущими данными

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

Ответ №1:

Как мы говорили в комментариях, вам нужно сохранить свой счетчик, чтобы узнать, сколько раз кто-либо нажимал.

 # try to read the counter stored in a file  try:  f = open("counter.txt", "r")  data_returned_as_str = f.read()  counter = int(data_returned_as_str) except FileNotFoundError as e:  counter = 0   # do your stuff  counter  = 1 f = open("counter.txt", "w") # use write to overwrite the last content f.write(str(counter)) f.close()  print(counter)  

Если вам также нужны предыдущие данные, напишите другой файл, чтобы прочитать его.

Комментарии:

1. я пытался переработать ваш ответ в соответствии со своими потребностями, но ничего не вышло. основная проблема заключается в том, когда кнопка нажата один раз, второй, третий ….

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