Я просто отлаживал эту проблему. Ошибка возникает, когда Django пытается настроить процессоры контекста шаблона, и основной причиной было определение, которое должно было быть кортежем, но фактически являлось строкой.
Это то, что у меня было в моем конфигурационном файле:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth'
)
Вот что я должен был иметь:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
)
Без запятой, Python рассматривает значение переменной как строку. Таким образом, код Django, который выглядит так:
for path in settings.TEMPLATE_CONTEXT_PROCESSORS:
i = path.rfind('.')
module,attr = path[:i],path[i+1:]
первым значением 'path' является 'd', а не 'django.core.context_processors.auth'. Это приводит к тому, что значение 'i' равно -1, и, следовательно, значение 'module' будет пустым.
Убедитесь, что все похожие на кортежи в вашей конфигурации Django на самом деле являются кортежами, что означает, что, если они имеют одно значение, им по-прежнему нужна запятая.