2010-08-12 8 views
5

Mon cadre soulève une erreur de syntaxe lorsque je tente d'exécuter ce code:Soyez mon compilateur humain: Quel est le problème avec ce code Python 2.5?

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

Et voici l'erreur:

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 

Que se passe-t-il?

Répondre

17

Le syntaxe alternative except SomeException as erris new in 2.6. Vous devez utiliser except SomeException, err dans 2.5.

+0

Génial! Merci. –

3

Vous n'avez rien dans votre bloc try. Un try/except ressemble:

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

Vous ne pouvez pas avoir un bloc try vide comme ça en Python. Si vous voulez juste de ne rien faire dans le bloc (pour le code de prototypage, par exemple), utilisez le mot-clé pass:

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

Edit: Cela répond à la version originale de la question. Je vais le laisser pour la postérité, mais la question a maintenant été révisée et @jleedev a la bonne réponse à la question révisée.

4

Vous ne pouvez rien essayer. Si vous avez vraiment rien à essayer, utiliser le mot-clé pass:

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

Mais basé sur mon (limité) la connaissance de Django, je suppose que vous voulez quelque chose comme ceci:

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

Merci, vous l'avez cloué - j'ai collé le mauvais code, qui correspond essentiellement à votre correction. Je reçois toujours une erreur, car j'ai modifié la question initiale pour la refléter. –

1

Dans chaque bloc en Python, vous devriez faire quelque chose, ou si vous ne voulez pas faire quelque chose, utilisez l'instruction pass!