python - 如何将“datetime-local”输入类型的值从 HTML 返回到字符串中的 python 烧瓶
问题描述
这段代码的目的是要求用户输入特定的日期和时间。输入应该从 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>
蟒蛇代码是:
resultstruct_time = time.strptime(reservationtime,"%Y-%m-%d %H:%M")
reservationDayID = resultstruct_time(6) + 1
reservationHour = resultstruct_time(3)
我得到的错误是:
TypeError:strptime() 参数 0 必须是 str,而不是 class 'NoneType'
任何人都可以通过告诉我如何将输入更改为 str 同时将输入类型保持为“datetime-local”来帮助我解决这个问题吗?谢谢!
编辑:似乎 HTML 表单没有向 python 返回任何内容。但是为什么会这样呢?有没有办法传回“预订时间”的期望值?以下是所有相关代码的转贴:
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>
谢谢!
解决方案
我猜什么都没有被退回。您可以尝试在 python 收到响应的地方添加打印。打印收到的响应的类型,然后从那里开始调试。尝试将类型转换为字符串。尝试检查是否没有返回任何内容。有时什么都不返回,它是一个 noneType 对象。
print(type(reservationtime) ) #debugging
print(reservationtime) #debugging
resultstruct_time = time.strptime(str(reservationtime),"%Y-%m-%d %H:%M")
编辑帮助调试
def getReservationTime():
if request.method == "POST":
print('made to POST')
return "test-string"
#reservationtime = request.form["reservationtime"]
#return reservationtime
好的,如果你得到打印并且它没有返回 noneType 这意味着你只需要修复注释行。如果它没有在那里,您必须修复处理生成帖子的获取预订代码。我没有使用足够的烧瓶来给你确切的答案,只是继续摆弄它,看看是否甚至发生了发布请求。
推荐阅读
- javascript - Angular - 在客户端关闭互联网连接的情况下发送重复的 http 请求时是否有任何性能损失?
- git - git rebase 后如何继续?
- json - 这个弹性 json 查询、映射有什么问题?
- r - 如何从 R 调用亚马逊产品广告 API 5?
- python - 如何在用户登录时运行 Python 脚本
- php - 查找两次之间的可用会议时段
- python - MouseWheel 上下绑定在 tkinter 中不起作用
- python - Tkinter - 迭代默认文本条目
- java - 在 Spring Boot 中从 CrudRepository 访问表的几列
- google-bigquery - 在 Google Cloud Build YAML 脚本中分隔 BigQuery REGEXP_EXTRACT 字符串