Как вернуть значение типа ввода datetime-local из HTML в python-флакон в виде строк - PullRequest
0 голосов
/ 09 ноября 2019

Цель этого фрагмента кода - попросить пользователей ввести определенную дату и время. Входные данные следует отправлять из формы HTML в app.py, а сценарий python должен проверять ввод и отображать «доступные киоски» соответственно.

Я пробовал это:

<div class="row">
  <div class="col-md-12">
      <div class="box box-primary">
          <div class="box-header">
              <h3 class="box-title">Please select a date & time to view available stalls : </h3>
            </div>
            <div class="box-body">
              <form method="POST" action="">
                <div class="form-group">
                    <label>Date and time range:</label>
                    <div class="input-group">
                      *****<input type="datetime-local" id="reservationtime"
                       name="reservationtime" value="2019-11-15T14:30"
                       min="2019-01-01T00:00" max="2030-12-31T00:00">*****

                    </div>
                    <button type = "submit" class="btn btn-primary">Submit</button>
                    <!-- /.input group -->
                </div>
              </form>
            </div>
      </div>
  </div>
</div>

код Python:

resultstruct_time = time.strptime(reservationtime,"%Y-%m-%d %H:%M")
reservationDayID = resultstruct_time(6) + 1
reservationHour = resultstruct_time(3)

И ошибка, которую я получаю:

TypeError: аргумент strptime () 0 должен быть str, а не классом 'NoneType'

Может ли кто-нибудь помочь мне решить эту проблему, сказав, как изменить вход в str, сохраняя при этом тип ввода как "Дата и время-местный?»Спасибо!

Редактировать: Кажется, что HTML-форма ничего не возвращает Python. Но почему это происходит? Есть ли способ вернуть желаемое значение «bookingtime»? Ниже приведен репост всего соответствующего кода:

python:

@app.route("/FilterStallsPage",methods = ["GET","POST"])
def DisplayFilterStallsPage():
    stallsInfoDict, availableStallsCount = filterAvailableStalls()
    return render_template('FilterStallsPage.html',stallsInfoDict =   stallsInfoDict, \
    totalStalls = len(stallsInfoDict), availableStalls = availableStallsCount)


def getReservationTime():
    if request.method == "POST": 
        reservationtime = request.form["reservationtime"]
        return reservationtime

def filterAvailableStalls():
    reservationtime = getReservationTime()
    resultstruct_time = time.strptime(str(reservationtime),"%Y-%m-%d %H:%M")

    reservationDayID = resultstruct_time(6) + 1
    reservationHour = resultstruct_time(3)
    (the rest block of irrelevant code not included)

HTML:

    <div class="row">
      <div class="col-md-12">
          <div class="box box-primary">
              <div class="box-header">
                  <h3 class="box-title">Please select a date & time to view available stalls : </h3>
                </div>
                <div class="box-body">
                  <form method="POST" action="">
                    <div class="form-group">
                        <label>Date and time range:</label>
                        <div class="input-group">
                          *****<input type="datetime-local" id="reservationtime"
                           name="reservationtime" value="2019-11-15T14:30"
                           min="2019-01-01T00:00" max="2030-12-31T00:00">*****

                        </div>
                        <button type = "submit" class="btn btn-primary">Submit</button>
                        <!-- /.input group -->
                    </div>
                  </form>
                </div>
          </div>
      </div>
    </div>

Спасибо!

1 Ответ

0 голосов
/ 09 ноября 2019

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

print(type(reservationtime) ) #debugging
print(reservationtime)        #debugging
resultstruct_time = time.strptime(str(reservationtime),"%Y-%m-%d %H:%M")

edit-помогает-debug

def getReservationTime():
    if request.method == "POST": 
        print('made to POST')
        return "test-string"
        #reservationtime = request.form["reservationtime"]
        #return reservationtime

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

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