2012-08-22 21 views
11

我剛開始在Django上開發,然後我覺得使用Syntastic syntax checker就是個好主意。Syntastic + Django

問題是,它抱怨有些事情是錯誤的,事實上,他們不是。

例子:

  1. 對於

    from django.core.urlresolvers import reverse 
    

    我得到:

    error| [F0401] Unable to import 'django.core.urlresolvers' 
    
  2. 對於

    amount = self.sale_set.filter(date__year=year).aggregate(sum=Sum('amount'))["sum"] 
    

    我得到(其中selfAlbum

    error| [E1101, Album.get_sales_total] Instance of 'Album' has no 'sale_set' member 
    

此代碼運行完全即使有這些「錯誤」,但我怎樣才能使Syntastic的行爲是否正確?

+0

這應該是一個給Syntastic開發者的bug報告。 –

+1

更可能是flake8,pyflakes或pylint中的錯誤,因爲它們是Syntastic使用的默認語法檢查器。 –

回答

4

這兩條消息都來自pylint - 您可以在pylint --help-msg=$IDhttp://pylint-messages.wikidot.com/上看到更全面的解釋。

您可以禁用與相關的檢查。from django.core.urlresolvers import reverse # pylint: disable=F0401,但這很快就會令人厭​​煩。

有一個pylint plugin for Django它肯定會修復你的E1101(我也希望F0401)。也許有安裝插件和配置Syntastic使用它?

+0

不錯的建議,但沒有爲我工作。至少,在一個virtualenv。 – logc

5

捎帶上@ supervacuo的回答是:

有一種方式來獲得這種對syntastic工作,這是相當簡單的,如果不容易弄清楚的人不熟悉syntastic選項(比如說我):

在.vimrc,加入這一行:

let g:syntastic_python_pylint_args = "--load-plugins pylint_django"

當然

,這確實需要pylint-django被安裝在您的環境