Подтвердить что ты не робот

Формат Python выбрасывает KeyError

Следующий фрагмент кода:

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

вызывает KeyError:

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

Кто-нибудь знает, почему?

4b9b3361

Ответ 1

В этом коде есть несколько невыбранных фигурных скобок. Python считает, что все фигурные скобки являются заполнителями и пытается заменить их всех. Однако вы указали только одно значение.

Я ожидаю, что вы не хотите, чтобы все ваши фигурные скобки были заполнителями, поэтому вы должны удвоить те, которые вы не хотите заменять. Например:

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

Я также позволил использовать тройные кавычки для строкового литерала, поэтому вам не нужны обратные косые черты в конце каждой строки.