flask - излишнее количество функций
У меня есть много функций, от которых хотелось бы избавиться, например:
@app.route('/ranobe/')
def ranobe_main():
return render_template('ranobe/ranobe_main.html')
@app.route('/anime/sign_in/')
def sign_in():
return render_template('login_or_register/sign_in.html')
И множество других похожих функций, которые просто ссылаются html файлы. Можно ли как-то сократить количество строк, чтобы не повторять постоянно одни и те же действия? Если да, то напишите в качестве примера код, который сократит большую часть повторяющихся функций, пожалуйста. Также хотелось бы, чтобы привели в пример код, который будет лучше выглядеть, так как я учусь. Заранее спасибо)
Ответы (1 шт):
Автор решения: Roman-Stop RU aggression in UA
→ Ссылка
Можно сделать функцию для создания обработчиков:
def template_route(path, template_file):
@app.route(path)
def handler():
return render_template(template_file)
return handler
ranobe_main = template_route('/ranobe', 'ranobe/ranobe_main.html')
sign_in = template_route('/anime/sign_in/', 'login_or_register/sign_in.html')
Можно пойти дальше, как предложил CrazyElf:
def template_routes(*args):
assert len(args) % 2 == 0
for i in range(0, len(args), 2):
path, template_file = args[i], args[i+1]
template_route(path, template_file)
template_routes(
'/ranobe', 'ranobe/ranobe_main.html',
'/anime/sign_in/', 'login_or_register/sign_in.html',
)