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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0