Django中的finally语句语法错误

4 投票
3 回答
4037 浏览
提问于 2025-04-15 11:24

我在使用Django的时候遇到了一个错误:

错误类型: 语法错误 错误信息: 语法无效 (views.py, 第115行)

我的views.py代码大致是这样的:

def myview(request):
try:
    [...]
except MyExceptionClass, e:
    [...]
finally:
    render_to_response('template.html', {}, context_instance = RequestContext(request))

其中MyExceptionClass是一个继承自Exception的类,而第115行是'finally'语句的那一行。如果我把'finally'语句(第115-116行)去掉,代码就能正常运行。有人知道这是怎么回事吗?

非常感谢!

3 个回答

0

在Python 3中,应该是:

except MyExceptionClass as e:
    [....]

在你的情况下,这并不是这样。

2

Nadia说得对,如果你还在用Python 2.4或者更早的版本,那就需要用两个尝试块(try blocks):

try:
  try:
        [...]
  except MyExceptionClass, e:
        [...]
finally:
        render_to_response(...)
14

你正在使用哪个版本的Python?在2.5之前,你不能在同一个try块里同时使用except和finally这两个部分。

你可以通过把try块嵌套起来来解决这个问题。

def myview(request):
    try:
        try:
            [...]
        except MyExceptionClass, e:
            [...]
    finally:
        render_to_response(
            'template.html', {}, context_instance = RequestContext(request)
        )

撰写回答