【问题标题】:Be my human compiler: What is wrong with this Python 2.5 code?做我的人类编译器:这个 Python 2.5 代码有什么问题?
【发布时间】:2010-08-12 19:30:50
【问题描述】:

当我尝试执行此代码时,我的框架出现语法错误:

    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

发生了什么事?

【问题讨论】:

    标签: python django syntax


    【解决方案1】:

    备用语法except SomeException as err is new in 2.6。您应该在 2.5 中使用 except SomeException, err

    【讨论】:

      【解决方案2】:

      在 Python 中不能有一个空的 try 块。如果你只想在代码块中什么都不做(比如原型代码),请使用 pass 关键字:

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

      编辑:这回答了问题的原始版本。我会把它留给后代,但问题现在已被编辑,@jleedev 对修改后的问题有正确的答案。

      【讨论】:

        【解决方案3】:

        你不能什么都不试。如果你真的没什么可尝试的,请使用pass 关键字:

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

        但根据我对 Django 的(有限)知识,我猜你想要这样的东西:

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

        【讨论】:

        • 谢谢,你成功了——不过我粘贴了错误的代码,基本上符合你的更正。但是仍然出现错误,因为我已经修改了原始问题以反映。
        【解决方案4】:

        你的 try 块里面什么都没有。 一个 try/except 块看起来像:

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

        【讨论】:

          【解决方案5】:

          在 Python 的每个块中,您都应该做一些事情,或者如果您不想做某事,请使用 pass 语句!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-10-02
            • 1970-01-01
            • 2016-06-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多