Будьте моим человеческим компилятором: что не так с этим кодом Python 2.5? - PullRequest
5 голосов
/ 12 августа 2010

Мой фреймворк вызывает синтаксическую ошибку, когда я пытаюсь выполнить этот код:

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

И вот ошибка:

    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

Что происходит?

Ответы [ 5 ]

17 голосов
/ 12 августа 2010

Альтернативный синтаксис except SomeException as err является новым в 2.6 . Вы должны использовать except SomeException, err в 2.5.

6 голосов
/ 12 августа 2010

У вас не может быть пустого блока try, подобного этому в Python. Если вы просто хотите ничего не делать в блоке (скажем, для макетирования кода), используйте ключевое слово pass:

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

Изменить: Это ответ на оригинальную версию вопроса. Я оставлю это для потомков, но вопрос теперь отредактирован, и у @jleedev есть правильный ответ на пересмотренный вопрос.

4 голосов
/ 12 августа 2010

Вы не можете ничего попробовать. Если вам действительно нечего попробовать, используйте ключевое слово pass:

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

Но, основываясь на моих (ограниченных) знаниях о Джанго, я думаю, вы хотите что-то вроде этого:

try:
    return Template(value)
except TemplateSyntaxError as error:
    raise forms.ValidationError(error)
3 голосов
/ 12 августа 2010

У вас ничего нет в вашем блоке try. Блок try / кроме выглядит следующим образом:

try:
    do_something()
except SomeException as err:
    handle_exception()
1 голос
/ 13 августа 2010

В каждом блоке в Python вы должны что-то делать, или, если вы не хотите что-то делать, используйте оператор pass!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...