我尝试为item添加简单的发布/取消发布功能。我在模型中创建了一个布尔字段,并尝试在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))
答案 0 :(得分:2)
这实际上是一个常见的编程错误。请参阅Operators
=实际上是赋值运算符,而==检查相等。
您使用的语句始终返回true,因此传递If条件。
同样,布兰登指出,如果将article.published用于布尔值,你总是可以使用。
请将您的问题标记为已回答,如果您认为自己已经解决了问题。
答案 1 :(得分:0)
布兰登指出,我只需要使用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))