exctac: в твоём коде, если бы было понятно то не спрашивал бы :) реализация методов для обработки http запросов ( get/post/head/ etc. ) лежит на тебе, если твоя вьюха напрямую наследуется от View
Где сама задача? Зачем в функции subj.endswith('!') если на нее в итоге нет проверок? Это ли нужно было сделать вообще? Если пованговать, то скорее всего второе условие должно находить восклицание на конце(exclamation), а не восклицательный знак(exclamation mark)
sanya84: в цикле функция создаётся 4 раза, новый поток создаётся 4 раза и запускается 4 раза. Если тебе убрать оттуда всю эту муть в две строчки с потоками и просто вместо них написать f(i) - получишь тот же самый результат, но уже просто 4 раза пересоздав функцию.
Советую скачать Лутца "Программируем на Python" последнее издание, открыть оглавление и перейти на модуль threading, он там почти в самом начале будет, читать не много, но хоть понятно будет как вообще с эти модулем можно и нужно работать