Поиграв с python-socketio
s django_example и увидев, что он отлично работает, я создал новый проект django, настроил его точно так же, как в примере, скопировал пример приложения в проект (вместе с переопределением команды управления сервером запуска). Все работало нормально, и я смог внести несколько изменений, чтобы вы могли установить псевдоним, кое-что в Redis для поиска псевдонима по sid, а также смог поддерживать отправку личных сообщений на ник. Все по-прежнему работало отлично.
Я решил, что следующим логическим шагом будет вместо того, чтобы вручную устанавливать псевдоним, требовать от пользователя входа в систему, отображать свое имя пользователя как var в блоке скрипта в шаблоне (я переместил scripts/index.html
в templates/index.html
) и автоматически иметь javascript автоматически генерировать мое пользовательское событие set_nick с именем пользователя при подключении.
Я определил LOGIN_URL = '/accounts/login'
в settings.py, включил 'django.contrib.auth.urls' в свой urls.py и обернул представление индекса @login_required
.
Только тогда я заметил, что независимо от того, какой URL-адрес вы запрашиваете, вы всегда получаете представление индекса приложений чата - нет перенаправления страницы входа, «/admin/» игнорируется и т. д.
РЕДАКТИРОВАНИЕ Решено. См. мой ответ ниже.