Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:API中的自定义方法调用返回false_Python_Django_Python 3.x - Fatal编程技术网

Python Django:API中的自定义方法调用返回false

Python Django:API中的自定义方法调用返回false,python,django,python-3.x,Python,Django,Python 3.x,我是Django的初学者,正在做这个教程:但是我被他们教你如何使用API的部分卡住了(向下滚动直到你到达玩API的部分): 以下是完整的源代码(models.py): 起初我认为函数之间的空格可能不够,所以我尝试修复它,当这不起作用时,我复制并粘贴了确切的代码,有人能告诉我哪里出了问题以及如何修复吗?提前谢谢 Python版本:3.5 操作系统:Linux Mint肉桂我不太明白你有什么问题 是不是《q.was_published_recently》()真的应该返回true?还是你面临着某种错误

我是Django的初学者,正在做这个教程:但是我被他们教你如何使用API的部分卡住了(向下滚动直到你到达玩API的部分):

以下是完整的源代码(models.py):

起初我认为函数之间的空格可能不够,所以我尝试修复它,当这不起作用时,我复制并粘贴了确切的代码,有人能告诉我哪里出了问题以及如何修复吗?提前谢谢

Python版本:3.5


操作系统:Linux Mint肉桂

我不太明白你有什么问题

是不是《q.was_published_recently》()真的应该返回
true
?还是你面临着某种错误


尝试在return语句之前打印出
发布日期
,以验证该日期实际上是什么。

我建议您尝试打印
问题
实例的字段

>>> q = Question.objects.get(pk=1)
>>> q.question_text
'here will be the text of your question instance'
>>> q.pub_date
'here will be the date and time of your question instance'
>>> q.was_published_recently()
False

通过这种方式,您可以看到
问题
实例设置的日期和时间,这应该可以弄清楚您的方法
最近发布的原因
返回
是的,它应该返回
,我也尝试使用
打印()
打印
发布日期
,但它不起作用,你能在Django的API中使用print()函数吗?我与Django合作已经有一段时间了,但是尝试print(self.pub_date)也不起作用,这是输出:
NameError:name'self'未定义
Hmm好的,我想我们可以尝试将
was_published_最近发布的
函数更新为只
返回self.pub_日期
,同样的结果,它返回了
false
这里没有任何错误。该方法返回False,可能是因为它是False。我不明白为什么你会认为间距与任何事情都有关系。当我键入
q.pub_date
时,这是输出:
datetime.datetime(2018,4,13,19,37,44,22617,tzinfo=)
你能告诉我
2018
之后的数字是什么吗?我对这件事还不太熟悉。那差不多是8天前的事了。如果发布日期与当前时间之间的差值小于一天(请参见所述方法中的逻辑),则最近发布的方法
将只返回
True
。如果将方法中的部分
datetime.timedelta(days=1)
更改为更大的值(可能
days=10
)然后该方法应该返回True。这只是为了确认该方法是否按预期工作。现在我想起来了,有一段时间我没能继续学习教程几天,这是我应该在
settings.py
中解决的问题还是什么问题?没有什么需要解决的,因为没有什么问题。一切按计划进行。如果您今天创建一个新问题,它的方法
最近发布了
将返回
True
from django.db import models
import datetime
from django.utils import timezone

# Create your models here.
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text


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

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text
>>> q = Question.objects.get(pk=1)
>>> q.question_text
'here will be the text of your question instance'
>>> q.pub_date
'here will be the date and time of your question instance'
>>> q.was_published_recently()
False