request.POST['time'] 必须是日期字段()
我刚接触Django,可能问的问题有点基础。
我有以下代码:
crush.time = request.POST['time']
这里的'time'是一个时间字段,我需要把它当作时间来处理,但我得到的却是crush.time是一个字符串。然后我在尝试处理的时候遇到了以下错误:
'unicode' object has no attribute 'hour'
3 个回答
1
POST多字典里存的是字符串,它并不知道Python里的数据类型。你需要把它解析成一个日期时间对象。可以去看看日期时间的相关文档。
1
假设你的 'time' 字段是以 H:M:S 或 H:M 的格式表示的,那么你可以创建一个 Django 表单来帮你处理这些数据(记住,你不一定需要输出这个表单):
在你的 forms.py 文件中:
from django import forms
class BasicTimeForm(forms.Form):
time = forms.TimeField()
在你的视图中:
if request.method == 'POST':
form = forms.BasicTimeForm(request.POST)
if form.is_valid():
crush.time = form.cleaned_data['time']
在提交后,crush.time 现在应该包含一个 datetime.time 对象。
2
只需要使用Python的datetime
库就可以把时间转换成时间对象:
datetime.datetime.strptime(request.POST['time'], '%H:%M:%S').time()