2012-08-22 12 views
11

Acabo de empezar a desarrollar en Django, y luego pensé que usar el Syntastic syntax checker sería una buena idea.Syntastic + Django

El problema es que se queja de que algunas cosas están mal cuando, de hecho, no lo son.

Ejemplos:

  1. Para

    from django.core.urlresolvers import reverse 
    

    me sale:

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

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

    consigo (donde self es un Album)

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

Este código funciona perfectamente incluso con estos "errores", pero ¿cómo puedo hacer que Syntastic comportarse correctamente?

+0

Esto debería ser un informe de error para los desarrolladores de Syntastic, entonces. –

+1

Es más probable que sea un error en flake8, pyflakes o pylint, ya que son los verificadores de sintaxis predeterminados utilizados por Syntastic. –

Respuesta

4

Ambos mensajes provienen de pylint - puede ver explicaciones más completas con pylint --help-msg=$ID, o en http://pylint-messages.wikidot.com/.

Puede deshabilitar los controles con p.from django.core.urlresolvers import reverse # pylint: disable=F0401, pero eso se vuelve tedioso bastante rápido.

Hay un pylint plugin for Django que definitivamente arreglará su E1101 (y espero que también el F0401). ¿Tal vez probar instalar el complemento y configurar Syntastic para usarlo?

+0

Buena sugerencia, pero no funcionó para mí. Al menos, dentro de un virtualenv. – logc

5

que lleva a cuestas sobre la respuesta de @ supervacuo:

hay una manera de conseguir este trabajo para syntastic y es bastante sencillo, si no es fácil de entender para alguien no familiarizado con las opciones syntastic (como, por ejemplo, Me):

en su .vimrc, agregue esta línea:

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

por supuesto, esto requiere pylint-django ser instalado en su entorno