Python格式抛出了一个错误

Python格式抛出了一个错误,python,Python,以下代码段: template = "\ function routes(app, model){\ app.get('/preNew{className}', function(req, res){\

以下代码段:

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'
Traceback(最近一次调用last):文件“createController.py”,第31行,在
});“.format(className=className)键错误:'app'

有人知道原因吗?

代码中有许多未替换的大括号。Python认为所有大括号都是占位符,并试图将它们全部替换。但是,您只提供了一个值

我希望您不希望所有大括号都是占位符,因此您应该将不希望替换的大括号加倍。例如:

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

我还冒昧地对字符串文字使用了三重引号,这样就不需要在每行末尾加反斜杠。

好吧,不使用
格式的另一种方法是:

In [1673]: className = 'myclass'                                                                                                                                                                            

In [1674]: template = 'function routes(app, model){app.get("/preNew"{'+className+'}, function(req, res){res.render({"'+className+'".ejs, {});});});'                                                        

In [1675]: template                                                                                                                                                                                         
Out[1675]: 'function routes(app, model){app.get("/preNew"{myclass}, function(req, res){res.render({"myclass".ejs, {});});});'

您需要将所有不应格式化的大括号加倍。您遇到过吗?如果使用三重引号,您不必逃避每一行换行。可能会重复非常有用的答案。感谢您与大家分享此信息。:)