在 Django 中发出 POST 请求时如何解决 strftime TypeError?
How can I solve strftime TypeError when making a POST request in Django?
我正在使用 Django 创建一个包含 DateTimeField 的 API,但我收到以下错误“类型错误:'datetime.date' 对象的描述符 'strftime' 不适用于 'str' object" 我试过检查不同的来源,但我还没有找到解决方案。
- 错误是由 start_date 行引起的。
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strftime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
我认为解决此问题的一种简单方法是使用 datetime.strptime
根据给定格式将对象转换为字符串,如 doc
中所述
您的视图现在将写为:
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
strptime
Parse a string into a datetime object given a corresponding format.
(As per the datetime documentation)
datetime有两种方法:
- strftime: 用于将日期对象转换成字符串。
- strptime: 用于将字符串转换为日期对象。
在你的情况下,你需要第二个。您的代码将是:
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')
我正在使用 Django 创建一个包含 DateTimeField 的 API,但我收到以下错误“类型错误:'datetime.date' 对象的描述符 'strftime' 不适用于 'str' object" 我试过检查不同的来源,但我还没有找到解决方案。
- 错误是由 start_date 行引起的。
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strftime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
我认为解决此问题的一种简单方法是使用 datetime.strptime
根据给定格式将对象转换为字符串,如 doc
您的视图现在将写为:
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
strptime
Parse a string into a datetime object given a corresponding format. (As per the datetime documentation)
datetime有两种方法:
- strftime: 用于将日期对象转换成字符串。
- strptime: 用于将字符串转换为日期对象。
在你的情况下,你需要第二个。您的代码将是:
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')