Чего я добиваюсь: я создаю это небольшое веб-приложение, которое будет подключаться к данным ip / s через telnet, отправлять некоторые команды, возвращать некоторые ответы и отображать их на html-странице. Все, что я упомянул выше, будет происходить на той же странице. Большая часть работы работает.
Проблема: я пытаюсь отобразить ответ / и, полученные от этих ip / s, на той же HTML-странице, с которой я отправляю команду telnet, в textarea
после нажатия кнопки submit
. Ответы отправляются обратно на html_template в виде списка player_responses
. Сейчас происходит то, что мой цикл создает новый textarea
для каждого элемента в списке ответов, а не круто. ! [текущее поведение] https://imgur.com/a/4PCNEjs Я просто хочу обновить уже существующий textarea
со всеми ответами. Это происходит в <div id="console">
в моем player-poll.html
Отказ от ответственности: я нуб, не знаю, что я делаю большую часть времени.
В свою защиту я посмотрелчерез предложенные посты и сделал некоторые исследования самостоятельно, однако не нашел ответа на мою дилемму.
app.py
@app.route('/player-poll', methods=['GET', 'POST'])
def player_poll():
form = PlayerPollForm()
player_responses = []
if request.method == 'POST':
for i in form.ip_addr.data.split():
player_responses.append(f'Response from {i} is TELNET_ RESPONSE')
print(f'Item fount {i}')
print(player_responses)
return render_template('player-poll.html', title='Player Poll', form=form, len_player_responses=len(player_responses), player_responses=player_responses)
forms.py
class PlayerPollForm(FlaskForm):
ip_addr = TextAreaField('Players IP address one per line:', validators=[DataRequired()])
cmd = StringField('Command:', validators=[DataRequired()])
freq = FloatField('Frequency in sec:', validators=[DataRequired()])
count = IntegerField('Number of Iterations:', validators=[DataRequired()])
submit = SubmitField('Send Command')
logs = TextAreaField('Player Logs:')
player-poll.html
{% extends "template_layout.html" %}
{% block content %}
<div class="content-section">
<form action="{{ url_for('player_poll') }}" method="POST">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<div class="form-group">
<legend class="border-bottom mb-4">Player Poll</legend>
<div id="row-1" class="row">
<div id="col-1" class="col">
{{ form.ip_addr.label(class="form-control-label") }}
</div>
</div>
<div id="row-2" class="row">
<div id="col-1" class="col">
{{ form.ip_addr(class="form-control", rows="10", placeholder="Type your player ip addresses here, one per line.") }}
</div>
<div id="col-2" class="col">
<div id="row-2-6" class="row" style="padding-right: 15px">
<div class="col-sm-8 text-left" style="padding-left: 0">
{{ form.submit(class="btn btn-primary btn-lg") }}
</div>
</div>
</div>
</div>
<div id="console" class="row" style="padding-left: 15px; padding-right: 15px">
<legend class="border-bottom mb-2">Player Poll Logs:</legend>
<textarea id=playerPollLog class="form-control form-group" rows=17">Responses</textarea>
{% if request.method == 'POST' %}
{% for i in range(0, len_player_responses) %}
<textarea id=playerPollLog class="form-control form-group" rows=17">{{ player_responses[i] }}</textarea>
{% endfor %}
{% endif %}
</div>
</div>
</fieldset>
</form>
</div>
{% endblock content %}