我回到Python,至少有一点我在0.9.x Pinax安装中犯了语法错误。我在这里尝试做的是添加一个额外的过滤层(在默认的可选过滤之上,它提供允许用户查看所有博客条目或一个特定用户的所有博客条目的功能)。
在另一个文件 custom.py 中,我有一个函数threshold_check()
旨在以另一种方式过滤;它需要两个参数,一个 Django 用户和包括博客文章在内的几种类型的对象之一,并返回 true 或 false,是否应该包含该项。
我拥有的代码对我来说看起来是正确的,但 Django 在填充allowed_blogs
的列表理解的第二行报告了一个 SyntaxError:
def blogs(request, username=None, template_name="blog/blogs.html"):
blogs = Post.objects.filter(status=2).select_related(depth=1).order_by("-publish")
if username is not None:
user = get_object_or_404(User, username=username.lower())
blogs = blogs.filter(author=user)
allowed_blogs = [blog in blogs.objects.all() if
custom.threshold_check(request.user, blog)]
return render_to_response(template_name, {
"blogs": allowed_blogs,
}, context_instance=RequestContext(request))
我做错了什么,我需要做什么才能允许引用的custom.threshold_check()
批准或否决包含在allowed_blogs
列表中的Pinax博客对象?
TIA,
[blog in blogs.objects.all() if
custom.threshold_check(request.user, blog)]
这不是有效的 Python。也许你的意思是:
[blog for blog in blogs.objects.all() if
custom.threshold_check(request.user, blog)]