检查 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))
我尝试为项目添加简单的 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))