增删改查功能中修改datetime数据

在做网页增删改查功能中的改的时候,由于要修改datetime数据而发生的错误
在修改datetime数据是使用了代码ob.create_at = datetime.POST['create_at'].strptime("%Y/%m/%d")
from django.shortcuts import render
from django.http import HttpResponse
from django.core.paginator import Paginator
from django.db.models import Q
import datetime
# Create your views here.
from myadmin.models import Corporation,Building
.......

def update(request,cid):
    '''执行信息编辑'''
    try:
        ob = Corporation.objects.get(id=cid)
        ob.name = request.POST['name']
        ob.status = request.POST['status']
        ob.legal_rep = request.POST['legal_rep']
        ob.reg_capital = request.POST['reg_capital']
        ob.create_at = datetime.POST['create_at'].strptime("%Y/%m/%d")
        ob.update_at = datetime.now().strftime("%Y-%m-%d")
        ob.contact_number = request.POST['contact_number']
        ob.email = request.POST['email']
        ob.entrt_type = request.POST['entrt_type']
        ob.web = request.POST['web']
        ob.address = request.POST['address']
        ob.nat_of_bus = request.POST['nat_of_bus']
        ob.building_id = request.POST['building_id']
        ob.save()
        context = {'info':"修改成功!"}
    except Exception as err:
        print(err)
        context = {'info':"修改失败!"}
    return render(request,"myadmin/info.html",context)
显示module 'datetime' has no attribute 'POST'
因为我期望的是在修改页面显示出当前录入时间信息所以用了datetime.POST,想问问该如何修改

如图所示:

img

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在代码 datetime.POST['create_at'].strptime("%Y/%m/%d") 中,datetime 是一个模块,而模块是没有 POST 属性的,因此出现了 module 'datetime' has no attribute 'POST' 的错误。如果要获取表单中的数据,需要通过 request.POST 进行获取。

同时,在将字符串转换为 datetime 类型的过程中,可以使用 datetime.datetime.strptime() 方法。该方法接收两个参数,第一个参数是需要转换的字符串,第二个参数是字符串的格式。在代码中可以这样写:

create_at_str = request.POST['create_at']
create_at = datetime.datetime.strptime(create_at_str, "%Y/%m/%d")
ob.create_at = create_at


这样可以将表单中的字符串转换为 datetime 类型,并将其赋值给 ob.create_at。

参考GPT和自己的思路,在 Django 中,POST 是一个字典,它包含在请求中发送的所有表单数据。但是 datetime 模块中并不存在 POST 属性,因此会出现 'module 'datetime' has no attribute 'POST' 错误。

如果您想在修改页面显示当前的录入时间信息,可以使用 Python 的 datetime 模块和 strftime 函数。将下面的代码行:

ob.create_at = datetime.POST['create_at'].strptime("%Y/%m/%d")

替换为以下代码行:

ob.create_at = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

此代码将当前日期和时间格式化为字符串,并将其赋给 create_at 属性。

如果您需要从用户提交的表单数据中获取日期和时间,并将其转换为 datetime 对象,则可以使用以下代码行:

ob.create_at = datetime.datetime.strptime(request.POST['create_at'], "%Y/%m/%d %H:%M:%S")

此代码将从表单数据中获取的日期和时间字符串转换为 datetime 对象,并将其赋给 create_at 属性。

请注意,在将日期时间字符串转换为 datetime 对象时,您需要使用与字符串格式相对应的格式指令(如上例中的 "%Y/%m/%d %H:%M:%S")。

datetime.POST 改成 request.POST

module 'datetime' has no attribute 'POST' 表示 datatime 没有 POST 属性。

以上问题很显然,因为 datatime 是 python 封装的一个库,它里边是和时间相关的一些函数及变量

如果要自动获取录入时的时间,应用以下代码
ob.create_at = datetime.now().strftime("%Y-%m-%d")

如果前端提交时提供了 create_at 字段的时间值,则应使用

ob.create_at = request.POST['create_at'].strptime("%Y/%m/%d")

需要注意的是前端提交的这个值应能转化成 datatime 类型,然后在对其格式化,
当然,如果前端提交的就是格式化好的,则使用如下代码:

ob.create_at = request.POST['create_at']