Django 导入 datetime

5 投票
4 回答
41346 浏览
提问于 2025-04-16 22:11

使用的环境:

你好,我是个Python初学者,之前学过PHP,所以如果这个问题很傻,请见谅。我在尝试调用p.was_published_today()时遇到了问题。它输出了这个错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/path/to/mysite/polls/models.py", line 12, in was_published_today
    pub_date = models.DateTimeField('date published')
NameError: global name 'datetime' is not defined

但是我在models.py中的代码看起来(对我来说)完全符合教程的要求:

from django.db import models 
import datetime

# Create your models here.

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def __unicode__(self):
        return self.question
    def was_published_today(self):
        return self.pub_date.date() == datetime.date.today()

# other code but not relevant to the error

我看到这里有其他人问过类似的问题,都是关于这个教程中datetime不工作的,但他们的回答对我并没有帮助。它在Python解释器中可以正常工作,但在脚本中却不行。我感到很困惑,已经在这个细节上花了45分钟了。有没有人知道怎么解决?

4 个回答

5

试试下面这个:

from datetime import datetime

这样你的代码就应该能正常运行了。datetime 是一个包的名字,而里面有你想用的 datetime

6

你可以使用这个链接:Django Utils Timezone

django.utils.timezone 这个模块里,你可以导入 is_awareis_naivenow,然后根据你的需求进行自定义:

与时区相关的类和函数。

这个模块会在有 pytz 的情况下使用它,如果没有的话就会使用其他方式。

from django.utils.timezone import datetime
14

确保你在你的视图文件中导入了datetime。添加:

import datetime

到你的Views.py页面中。之前有个问题的票据是为了解决这个问题:

https://code.djangoproject.com/ticket/5668

撰写回答