python - 为什么我不能在 django poll 教程第 5 部分的错误修复中使用 now 变量

标签 python django

我是 Python 和 Django 的新手。我正在研究民意调查教程,并决定在这里发布一个问题,该问题更多地使用 Python,而不是 Django... 在编写你的第一个Django应用程序,第5部分中,-> 编写我们的第一个测试,他们提出了一个错误,然后创建了一个测试来暴露该错误,运行该测试将导致测试失败。

修复如下 -> 修改如下所示的 models.py 中的方法 -> 测试将返回 true

def was_published_recently(self):
     now = timezone.now()
     return now - datetime.timedelta(days=1) <= self.pub_date <  now

我的问题是,当我在下面输入而不替换变量now时,测试将失败。这是为什么?这不是简单的替换吗?

def was_published_recently(self):
     return timezone.now() - datetime.timedelta(days=1) <= self.pub_date < timezone.now()

最佳答案

理解差异的最简单方法是通过一些示例:

In [4]: timezone.now() == timezone.now()
Out[4]: False

In [5]: a = timezone.now()
In [6]: a == a
Out[6]: True


In [11]: print timezone.now() - timezone.now()
-1 day, 23:59:59.999984

In [12]: print a - a
0:00:00

您应该注意到,每次调用 timezone.now() 时,您都会得到不同的时间。

关于python - 为什么我不能在 django poll 教程第 5 部分的错误修复中使用 now 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777206/

相关文章:

python - 使用 python 将一些键发送到非事件窗口

python - 查找多列总和最大的行

python - 将参数传递给在 AWS Fargate 上的 Docker 容器中运行的 Python

python - 在 Django 或数据库中在哪里检查约束?

Python 正在向后打印一个列表,但不打印其他列表

django - 检测行差异( View 或模型)?

python - 获取掩码数组的最小值

python - 在 AWS 上拍摄 RabbitMq 实例的快照是否会损害我的应用程序产品?

python - 按高度/方向对图像进行排序

django - 注释在 Django/Tastypie 中被忽略