Как получить доступ к определенному html в python Flask?

Я пытаюсь создать лист персонажей RPG, используя флягу. В этом проекте у меня есть две кнопки ( level+ и level- ), которые добавляют или уменьшают уровень персонажа при нажатии.

Итак, у меня есть html-файл:

<div class = "level">
  <button type = "button" name = "level-">-</button>
  <p>{{ level }}</p>
  <button type = "button" name = "level+">+</button>
</div>

и мой файл фляги:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/', methods=['POST', 'GET'])
def index():
    level = 0
    
    return render_template('index.html', level=level)

if __name__ == '__main__':
    app.run(debug=True)

Как мне получить доступ к кнопкам, чтобы я мог увеличивать или уменьшать переменную уровня в файле python?

Отвечает ли это на ваш вопрос? Кнопка Flask передает переменную обратно в python

Patrick Yoder 29.03.2022 17:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
26
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите, чтобы у него были действия на стороне сервера, вам, вероятно, потребуется создать его HTML-форму, чтобы браузер отправлял POST-запрос к API вашего веб-сайта. Если вы хотите, чтобы у него были действия на стороне клиента, вам нужно будет создать сценарий Javascript, чтобы браузер выполнял код, когда пользователь нажимает кнопку.

Ответ принят как подходящий

Я предлагаю сделать это с помощью javascript, так как это менее ресурсоемко, чем отправка запроса на серверную часть и передача нового уровня в шаблон.

<div class = "level">
    <button type = "button" name = "level-" onclick = "changeLevel(-1)">-</button>
    <p id = "level_number">{{ level }}</p>
    <button type = "button" name = "level+" onclick = "changeLevel(1)">+</button>
</div>
    
<script>
    function changeLevel(change) {
      var x = document.getElementById("level_number");
        if (parseInt(x.innerHTML) + change >=0){
            x.innerHTML =  parseInt(x.innerHTML) + change;
        }
    }
</script>

Если вы необходимость уровня в своем бэкэнде, вы можете использовать AJAX или использовать скрытый ввод в форме и прочитать значение в бэкэнде, используя request.form["level_number"]

<form class = "level">
    <button type = "submit" name = "level-" onclick = "changeLevel(-1)">-</button>
    <p id = "level_number">2</p>
    <input type = "hidden" name = "level_number" id = "hidden_level_number" value = "{{ level }}"/>
    <button type = "submit" name = "level+" onclick = "changeLevel(1)">+</button>
</form>
        
<script>
    function changeLevel(change) {
        var x = document.getElementById("level_number");
        var y = document.getElementById("hidden_level_number");
        if (parseInt(x.innerHTML) + change >=0){
            x.innerHTML =  parseInt(x.innerHTML) + change;
            y.value=x.innerHTML;
        }
    }
</script>

Спасибо! Сейчас это работает. На самом деле я пытался обновить уровень из бэкэнда, но обновить его из внешнего интерфейса, а затем обновить его в бэкэнде проще.

Obnoxius_Guy 01.04.2022 10:53

Другие вопросы по теме