繁体   English   中英

在 Django 中发出 POST 请求时如何解决 strftime TypeError?

[英]How can I solve strftime TypeError when making a POST request in Django?

我正在使用 Django 创建一个包含 DateTimeField 的 API,但我收到以下错误“TypeError:descriptor 'strftime' for 'datetime.date' 对象不适用于 'str' 对象” 我曾尝试检查不同的来源,但我还没有找到解决办法。

  • 该错误是由 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根据给定格式将对象转换为字符串

您的视图现在将写为:

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将字符串解析为给定相应格式的日期时间对象。 (根据日期时间文档)

datetime 有两种方法:

  • strftime :用于将日期对象转换为字符串。
  • strptime :用于将字符串转换为日期对象。

在你的情况下,你需要第二个。 你的代码将是:

start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM