gpt4 book ai didi

python - DateTime 对象没有——Python

转载 作者:行者123 更新时间:2023-12-01 05:05:05 27 4
gpt4 key购买 nike

我在 Django 中执行此操作。 DateTime 字符串已成功传递到 POST 中。这是我的代码:

vk = Vk()
day1 = request.POST['day1']
vk.day1 = datetime.datetime.strptime(day1, '%m/%d/%Y %I:%M %p')
vk.save()

这是 POST 信息的格式:

'day1': 'MM/DD/YYYY HH:MM AM/PM' # AM/PM meaning either AM or PM

问题在于 vk 实例上的 DateTimeFieldNone

class Vk(models.Model):
day1 = models.DateTimeField(null=True, blank=True)

我发现我的 HTML 文件中没有:

{% for vk in vk %}
{{ vk.day1 }}
{% endfor %}

相当于无。

这是负责渲染模板的 View :

def list_verkefni(request):
vk = Vk.objects.all()
vm = Vm.objects.all()

return render(request, 'list_verkefni.html',
{'vk': vk, 'vm': vm}
)

最佳答案

为什么不使用 ModelForm?

someapp/forms.py:

class VkForm(forms.ModelForm):
class Meta:
model = Vk
fields = ('day1', )

def __init__(self, *args, **kwargs):
super(VkForm, self).__init__(*args, **kwargs)
self.fields['day1'].input_formats = ['%m/%d/%Y %I:%M %p', ]

someapp/views.py:

def myview(request):
form = VkForm(request.POST or None)
if request.method == "POST" and form.is_valid():
obj = form.save()
return HttpResponseRedirect('/somewhere/')
return render(
request, 'template.html',
{'form': form}
)

是的,你多写了一点代码,但是:

  • 您将获得完整的验证以及良好的错误消息
  • 以后无论何时扩展模型,都不需要重写代码,只需将字段名称添加到 ModelForm 中即可
  • 您不需要对 Python 数据类型进行低级转换

这被认为是一种不好的做法:

{% for vk in vk %}
{{ vk.day1 }}
{% endfor %}

虽然这在 Django 模板引擎中有效,但它非常令人困惑。如果您在 Python 中编写相同的内容,vk 将被覆盖。每当您使用项目列表时,请将 _list 附加到变量名称,例如:object_listvk_list 以区分单个对象和列表。

为了更好地调试代码,我建议 pip install pudb 并执行以下操作:

vk = Vk()
day1 = request.POST['day1']
import pudb; pudb.set_trace()
vk.day1 = datetime.datetime.strptime(day1, '%m/%d/%Y %I:%M %p')
vk.save()

运行本地开发服务器,执行 POST 请求并检查您的终端。检查 request.POST['day1'] 是否确实符合您的预期,以及日期时间实例是否已在您的 day 属性上设置。

关于python - DateTime 对象没有——Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com