Python format throws KeyError

Question:

The following code snippet:

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

throws a KeyError:

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

Does someone know why?

Asked By: lowerkey

||

Answers:

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.

Answered By: kindall
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.