set_fact: kafka_connection_string="{{ kafka_hosts | join(':' ~ kafka_server_port ~ ',') }}:{{ kafka_server_port }}"
Подчеркивание вместо точки перед портом. Точно так же, как вы объявили свои переменные.
Нет никакого универсального лучшего способа. Но существует правильный путь к Вашей ситуации.
Так же, как стартовый пример: Я рекомендую Вам начать с модели и обработать себя:
Некоторые разработчики делают свои представления пакетом Python вместо модуля. Это просто означает делать каталог названным views
в Вашем приложении, затем помещающем каждое представление в его собственный модуль (файл) в том пакете.
Затем Вы создаете __init__.py
файл (который является тем, что делает его пакетом). Этот файл может быть пустым, или это может быть импорт все модули представления в его собственное пространство имен.
Если бы это пусто, необходимо было бы импортировать каждое представление, в котором Вы нуждаетесь непосредственно иначе, можно импортировать его, как если бы это был views.py модуль.
Я выделил бы представления с подобной целью или функциональностью в один файл, и включал бы это в views.py. Я только делаю это для удобочитаемости и обслуживания. Например, CRUD просматривает для конкретного объекта или группы объектов.
Путем импорта этих представлений непосредственно в основной views.py файл, это позволяет людям, не знакомым с конвенцией найти то, что то, где.
views/object_view.py
В идеальном мире Вам не придется сделать этого. Вместо этого попытайтесь осуществить рефакторинг свой код в различные django приложения для каждой подцели, в которой нужен Ваш проект. Тем путем можно разделить проект еще лучше, чем Вы могли иметь, если Вы только разделяете views.py файл.
Для подсказок относительно того, как разделить Ваш проект на различные приложения, я рекомендую читать Практического Django Projects James Bennett, который является тем, что я перечитываю прямо сейчас :)