检查 views.py 中的布尔字段状态

Check boolean field state in views.py

我尝试为项目添加简单的 publish/unpublish 功能。我在模型中创建了一个布尔字段并尝试检查 views.py 中的 true/false 状态。如果它是错误的 - 显示 404 页面..

但我无法正确编写我的视图 - 出现无效语法错误。我怎样才能让它发挥作用?

我的模特:

class Article(models.Model):
    class Meta():
        db_table = 'article'

    title = models.CharField(max_length=200, blank=False, null=False)
    anchor = models.CharField(max_length=200, blank=False, null=False)
    image = models.ImageField(upload_to='items', blank=False, null=False)
    text = RedactorField(blank=False, null=False)
    files = models.FileField(upload_to='files', null=True, blank=True)
    date = models.DateField(blank=True, null=True)
    tags = TaggableManager()
    published = models.BooleanField(default=False)

    def __str__(self):
        return self.anchor

我的看法:

def article(request, anchor):
    article = Article.objects.get(anchor=anchor)
    if article.published = True:
        args = {}
        args['article'] = Article.objects.get(anchor=anchor)
    else:
        Http404

    return render_to_response('article.html', args, context_instance=RequestContext(request))

这其实是一个普通的编程error.SeeOperators

= is actually the assignment operator,whereas == check equality.

您一直使用的语句 returns 为真,因此通过了 If 条件。

同样正如 Brandon 指出的那样,您始终可以使用 if article.published 作为布尔值。

如果您觉得已经解决了,请将您的问题标记为已回答。

正如 Brandon 指出的那样,我只需要使用 if article.published: 另外,感谢 Krishnan 和 Gocht 解释语法。

def article(request, anchor):
    article = Article.objects.get(anchor=anchor)
    if article.published:
        args = {}
        args['article'] = Article.objects.get(anchor=anchor)
    else:
        Http404

    return render_to_response('article.html', args, context_instance=RequestContext(request))