Проблема в том, что ваш файл views.py читается только один раз, при первом импорте модуля. После этого Python больше не будет смотреть этот файл на диске, поэтому ваши изменения не будут иметь никакого эффекта.
В целом, любой веб-сервер должен иметь четко определенный способ обновления своего контента. Если он не был специально разработан для обновления себя при изменении базовой файловой системы, вы не должны ожидать, что он будет работать в этой ситуации.
Что произойдет с Python, в частности, так это то, что код будет загружен из файловой системы один раз, когда модуль импортирован, а затем снова не будет затронут. Таким образом, если вы обновите файловую систему во время работы процесса Python, модули, которые уже были импортированы, будут использовать старый код, в то время как новые импортированные модули будут использовать новый код. (Подробнее о кэшировании модулей в Python см. этот вопрос .)
В целях разработки обычно используется веб-сервер, который автоматически перезапускается при обнаружении изменений в файловой системе. Это то, что делает сервер разработки Django. Тем не менее, это трудно сделать идеально, так как веб-сервер не может определить каждый файл, от которого может зависеть код. Также не всегда уместно просто перезапустить, так как это закроет существующие соединения TCP.
Из-за таких сложностей развертывание производства обычно работает иначе. Это может включать в себя явное завершение работы и перезапуск, или может включать подключение нового сервера с новым кодом в ожидании закрытия соединений на старом сервере. В любом случае, это будет зависеть от конкретного документированного способа использования веб-сервера.