2010-08-12 15 views
5

Mi marco está levantando un error de sintaxis cuando trato de ejecutar este código:Sea mi compilador humano: ¿Qué hay de malo en este código de Python 2.5?

from django.template import Template, TemplateSyntaxError 
    try: 
     Template(value) 
    except TemplateSyntaxError as error: 
     raise forms.ValidationError(error) 
    return value 

Y aquí está el error:

from template_field import TemplateTextField, TemplateCharField 
     File "C:\django\internal\..\internal\cmsplugins\form_designer\template_field.py", line 14 
     except TemplateSyntaxError as error: 
            ^
    SyntaxError: invalid syntax 

¿Qué está pasando?

Respuesta

17

El sintaxis alternativa except SomeException as erris new in 2.6. Debe usar except SomeException, err en 2.5.

+0

¡Impresionante! Gracias. –

3

No tiene nada dentro de su bloque de prueba. Un try/except bloque se parece a:

try: 
    do_something() 
except SomeException as err: 
    handle_exception() 
6

No se puede tener una try bloque vacío como la de Python. Si lo que desea es no hacer nada en el bloque (para el código de prototipos, por ejemplo), utilice la palabra clave pass:

from django.template import Template, TemplateSyntaxError 
try: 
    pass 
except TemplateSyntaxError as error: 
    Template(value) 
    raise forms.ValidationError(error) 
return value 

Editar: Esto responde a la versión original de la pregunta. Lo dejaré para la posteridad, pero la pregunta ya ha sido editada, y @jleedev tiene la respuesta correcta a la pregunta revisada.

4

No se puede intentar nada. Si realmente tiene nada que probar, usar la palabra clave pass:

try: 
    pass 
except TemplateSyntaxError as error: 
    Template(value) 
    raise forms.ValidationError(error) 
return value 

Pero basado en mis conocimientos (limitada) de Django, supongo que quieres algo como esto en su lugar:

try: 
    return Template(value) 
except TemplateSyntaxError as error: 
    raise forms.ValidationError(error) 
+0

Gracias, ya lo apunté, aunque pegué el código incorrecto, que básicamente coincide con tu corrección. Aún recibo un error, ya que modifiqué la pregunta original para reflejarla. –

1

En cada bloque de Python debe hacer algo, o si no desea hacer algo, utilice la instrucción pass.

Cuestiones relacionadas