Request.args не имеет всех данных формы - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь отправить форму в мое приложение Flask. Он имеет 3 именованные группы:

  • токен csrf
  • Действие по устранению, которое является одной из двух кнопок
  • Тип выпуска, который является одним из трех кнопок

Вот мой код формы:

<form method="get" action="{{url_for('connectivity.homeBase')}}">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<div class="column" style="width:48%; margin-left:1%; margin-right:1%;">
    <div class="columnContainer" style="text-align:center;">
        <div class="buttonWrapper" style="width:100%; margin:5px;">
            <button class="submitButton issueAction" id="newIssue" name="issueAction" value="newIssue" type="button" style="width:145px; height:75px; text-align:center;">New</button>
        </div>
    </div>
</div>
<div class="column" style="width:48%; margin-left:1%; margin-right:1%;">
    <div class="columnContainer" style="text-align:center;">
        <div class="buttonWrapper" style="width:100%; margin:5px;">
            <button class="submitButton issueAction" id="updateIssue" name="issueAction" value="updateIssue" type="button" style="width:145px; height:75px; text-align:center;">Update</button>
        </div>
    </div>
</div>
<div style="width:100%; height:25px; display:block; clear:both;">
</div>
<h3>Is this a partner outage, partner maintenance, or company outage?</h3>
<hr>
<div class="column" style="width:31%; margin-left:1%; margin-right:1%;">
    <div class="columnContainer" style="text-align:center;">
        <div class="buttonWrapper" style="width:100%; margin:5px;">
            <button class="submitButton issueType" id="partnerOutage" name="issueType" value="partnerOutage" type="button" style="width:145px;; height:75px; text-align:center;">Partner Outage</button>
        </div>
    </div>
</div>
<div class="column" style="width:31%; margin-left:1%; margin-right:1%;">
    <div class="columnContainer" style="text-align:center;">
        <div class="buttonWrapper" style="width:100%; margin:5px;">
            <button class="submitButton issueType" id="partnerMaintenance" name="issueType" value="partnerMaintenance" type="button" style="width:145px; height:75px; text-align:center;">Partner Maintenance</button>
        </div>
    </div>
</div>
<div class="column" style="width:31%; margin-left:1%; margin-right:1%;">
    <div class="columnContainer" style="text-align:center;">
        <div class="buttonWrapper" style="width:100%; margin:5px;">
            <button class="submitButton issueType" id="companyOutage" name="issueType" value="companyOutage" type="button" style="width:145px; height:75px; text-align:center;">company Outage</button>
        </div>
    </div>
</div>
<div style="width:100%; height:25px; display:block; clear:both;">
</div>
<h3 id="submitLabel">You must select an action and issue type to proceed.</h3>
<hr>
<div class="buttonWrapper" style="width:100%; margin:5px;" type="submit">
    <button class="submitButton" style="width:145px; height:75px; text-align:center;">GO!</button>
</div>

В Python я просто пытаюсь напечатать request.args:

@bp.route('/homeBase', methods=('GET', 'POST'))
def homeBase():
    print(request.args)
    return render_template('connectivity/homeBase.html')

Единственный элемент печатной формы - это токен CSRF. Я правильно назвал свои группы кнопок, присвоил каждому уникальный атрибут значения и обернул их все в тег формы.

Почему Flask получает только токен CSRF от клиента? Насколько я понимаю, у меня должна быть возможность видеть в запросе ProblemAction и IssueType, но его там нет.

Возможно, я мог бы кодировать это с помощью WTForm и исправить проблему, но я хочу понять, почему этот подходущербный, прежде чем я оставлю это.

1 Ответ

0 голосов
/ 08 октября 2019

Вы, похоже, пытаетесь использовать <button>, как если бы это была радиокнопка или, возможно, флажки, которые, я не думаю, будут работать нормально. Например, когда пользователь нажимает на одну из этих кнопок, как он визуально показывает, какое действие он выбрал? Вот для чего нужны переключатели и флажки. Когда вы нажимаете обычную кнопку, она просто ... нажимается. Но тогда ничего не произойдет, если к нему не добавлено type="submit" (по умолчанию) или к нему не подключен какой-либо обработчик событий JavaScript. Я не думаю, что «значения» кнопок передаются в формах, если только это не сама кнопка отправки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...