Python 格式抛出 KeyError

以下代码片段:

template = "\
function routes(app, model){\
app.get('/preNew{className}', function(req, res){\
res.render('{className}'.ejs, {});\
});\
});".format(className=className)

抛出一个键错误:

Traceback (most recent call last):   File "createController.py", line 31, in <module>
});".format(className=className) KeyError: '  app'

有人知道为什么吗?

59814 次浏览

You have a number of unescaped braces in that code. Python considers all braces to be placeholders and is trying to substitute them all. However, you have only supplied one value.

I expect that you don't want all your braces to be placeholders, so you should double the ones that you don't want substituted. Such as:

template = """
function routes(app, model)\{\{
app.get('/preNew{className}', function(req, res)\{\{
res.render('{className}'.ejs, \{\{}});
}};
}});""".format(className=className)

I also took the liberty of using triple quotes for the string literal so you don't need the backslashes at the end of each line.