2012-06-05 92 views
0

你知道爲什麼它會在返回行中聲明無效的語法嗎?一切似乎都沒問題,我檢查了一下。如果縮進是一個問題,我用空格替換了製表符。SyntaxError語法無效(views.py,第52行)

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, 
               },) 

在此先感謝。

+0

對於無效語法,請嘗試在返回語句 –

+0

結束時刪除','(逗號)不,我仍然收到錯誤 – tamara

回答

2

呃,你在開場三個try S和只有兩個except秒。 。您需要先趕上try之後return

+0

做到了這一點,它的工作原理。謝謝! – tamara

+0

如果您目前沒有使用某種類型的linter(一種爲您檢查語法的插件),那麼您可能會發現它對於跟蹤這樣的錯誤非常有用。事實上,我強烈推薦SublimeText(http://www.sublimetext.com/)和Sublime Linter插件(https://github.com/SublimeLinter/SublimeLinter),它會在您編碼時自動添加。 –

+0

不,我沒有使用。謝謝,我會檢查他們! – tamara

0

列表索引似乎就行

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

如果你知道你的查詢會返回一個結果,那麼不使用過濾器,用GET替換它,並與它一起使用try除。

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

否則你可以簡單的做

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

我上傳答案後問題已被修改: –

+0

嘿我在編輯問題後說你的答案。這是好的,這裏是解決方案http://stackoverflow.com/questions/3257414/django-in-debug-py-list-index-out-of-range但我仍然在渲染線錯誤無效的語法雖然。 – tamara

+0

對不起,我在同一時間瀏覽並顯示,認爲這是一個好主意,改變它不會混淆人們,並以不同的方式進行討論。 – tamara

0

添加的RequestContext在return語句

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)) 
+0

問題仍然存在!我真的不明白,我所有其他的視圖函數都是用相同的方式編寫的,但這不起作用。 – tamara

+0

你能展示這個視圖的回溯嗎? –

+0

我沒有在這個網站實施任何記錄器(我是一個初學者django) – tamara

相關問題