Добавление методов дает «ошибка индекса вне диапазона»? - PullRequest
0 голосов
/ 17 февраля 2019

При добавлении жизненно важного компонента methods=["POST", "GET"] мой код выдает ошибку:

Line 127, in PatientDashboard """.format(Data[0][0])) IndexError: list index out of range

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

@app.route("/PatientDashboard.html", methods=["GET", "POST"])
def PatientDashboard():
    Username = (request.args.get("Username"))

    Connection = sqlite3.connect(DB)
    Cursor = Connection.cursor()
    Data = Cursor.execute("""
        SELECT *
        FROM PatientTable
        WHERE Username = '{}'
    """.format(Username))
    Data = Data.fetchall()

    AllAppointments = Cursor.execute("""
        SELECT Title, Firstname, Surname, TimeSlot, Date, Status
        FROM AppointmentTable
        INNER JOIN DoctorTable ON AppointmentTable.DoctorID = DoctorTable.DoctorID
        WHERE PatientID = '{}'
    """.format(Data[0][0]))
    AllAppointments = AllAppointments.fetchall()

Операторы SQL работают отлично (база данных не пуста), и при добавлении print(Data) после первого оператора SQL выводится вложенный список.

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

Заранее большое спасибо.

РЕДАКТИРОВАТЬ 1:

Username = (request.args.get("Username"))
print("Username: ", Username)

Дает правильный вывод, например, Username: nx_prv, но после использования запроса POST вывод становится Username: None.

РЕДАКТИРОВАТЬ 2:

Мне удалось исправить это с помощью flask.sessions.Проблема заключалась в том, что request.args.get("Username") каждый раз получал «сброс».

1 Ответ

0 голосов
/ 17 февраля 2019

Сценарий, который я представляю: маршрут был протестирован методом GET (потому что не было аргумента methods), и все было хорошо.Был добавлен аргумент methods, чтобы можно было проверить POST, и он «перестал работать».Но он действительно не перестал работать, он просто не создан для обработки запроса POST.

Из фляжка по запросу объекта два существенных атрибута:

форма

A MultiDict спроанализированные данные формы из запросов POST или PUT.Имейте в виду, что загрузка файлов здесь не заканчивается, а вместо этого в атрибуте files.

args

MultiDict с разобранным содержимым строки запроса.(Часть в URL после знака вопроса).

Таким образом, запрос GET «заполнит» args и запрос POST form.Имя пользователя будет None из этой строки Username = (request.args.get("Username")) в запросе POST.

Какой метод можно определить, запросив атрибут метода объекта запроса.

method

Текущий метод запроса (POST, GET и т. д.)

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