在 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" 我试过检查不同的来源,但我还没有找到解决方案。

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')