【问题标题】:SyntaxError invalid syntax (views.py, line 52)SyntaxError 无效语法(views.py,第 52 行)
【发布时间】:2012-06-05 12:16:08
【问题描述】:

你知道为什么它在返回行中显示无效语法吗?一切似乎都很好,我检查了。如果缩进有问题,我会用空格替换制表符。

def detail(request, sl):
    try:
        post = Post.objects.filter(slug=sl)[0]
        try:
            previous_post = post.get_previous_by_published()
        except:
            previous_post = ""
        try:
            next_post = post.get.next_by_published()
        except:
            next_post = ""
    return render_to_response('blog/detail.html',{'post':post,
                                                  'next_post':next_post,
                                                  'previous_post':previous_post,
                                                 },)

提前致谢。

【问题讨论】:

  • 对于无效语法,请尝试删除 return 语句末尾的“,”(逗号)

标签: django list syntax views


【解决方案1】:

呃,你开了三个trys,只有两个excepts...你需要在return之前抓住第一个try

【讨论】:

  • 如果您当前没有使用某种 linter(一个为您检查语法的插件),那么您可能会发现它对于跟踪此类错误非常有用。事实上,我强烈推荐 SublimeText (sublimetext.com) 和 Sublime Linter 插件 (github.com/SublimeLinter/SublimeLinter),它们会在你编码时自动 lint。
  • 不,我没有使用。谢谢,我去看看!
【解决方案2】:

列表索引好像就行了

post = Post.objects.filter(slug=sl)[0]

如果您知道您的查询将返回单个结果,则不要使用 FILTER,将其替换为 GET 并与它一起使用 try except。

try:
    post = Post.objects.get(slug = sl)
except:
    pass #something

否则你可以简单地做

try:
    post = Post.objects.filter(slug = sl)[0]
except IndexError, e:
    pass #something

【讨论】:

  • 上传答案后问题已更改:|
  • 嘿,我在编辑问题后说出你的答案。没关系,这是解决方案stackoverflow.com/questions/3257414/…,但我仍然在渲染行错误处得到无效语法。
  • 抱歉,我正在同时浏览,但出现了,我认为最好更改它以免混淆人们并以不同的方式引导讨论。
【解决方案3】:

在您的退货声明中添加 RequestContext

from django.template.context import RequestContext

return render_to_response('blog/detail.html',{'post':post,
                                              'next_post':next_post,
                                              'previous_post':previous_post,
                                             },
                          context_instance=RequestContext(request))

【讨论】:

  • 问题依旧!我真的不明白,我所有的其他视图函数都是以相同的方式编写的,但这不起作用。
  • 我没有在这个站点中实现任何记录器(我是 django 的初学者)
猜你喜欢
  • 1970-01-01
  • 2018-06-21
  • 2022-08-16
  • 2015-09-08
  • 1970-01-01
  • 2019-01-11
  • 2013-12-19
  • 2018-12-14
  • 2020-07-30
相关资源
最近更新 更多