Поскольку вы используете request.get_host
, это разрешит все, что пользователь ввел в браузер. Возможно, ваши DNS-записи настроены на прием домена с или без www. Django не заботится о том, какой домен он обслуживает, за исключением случаев, когда вы используете его платформу Sites (ваш пример кода не касается фреймворка Sites, поэтому я полагаю, что это не так). Поэтому Django отвечает только на основании URL-пути и игнорирует домен.
Вы спрашиваете, можете ли вы удалить "www" из входящего запроса? Конечно, вы можете сделать это на уровне веб-сервера (apache / nginx и т. Д.) С перенаправлениями, специфичными для этих веб-серверов. Или вы можете пропустить запрос через веб-сервер и перехватить его на уровне сервера приложений (Django) с помощью специального промежуточного программного обеспечения. Здесь является примером этого.
Обратите внимание, что вы не можете использовать приложение Redirects , встроенное в Django, потому что оно работает только на путях, тогда как вы хотите манипулировать самим входящим доменом.
Итак, ваш выбор: настроить ваш веб-сервер или добавить модуль промежуточного программного обеспечения в ваш проект Django.
Настройка ALLOWED_HOSTS
не связана с вашим вопросом.
В сторону: Ваш вопрос немного сбивает с толку, потому что вы сначала спрашиваете об удаленном параметре запроса ?page=3
, но затем переключаетесь на вопрос о www в домене. Если вы спрашиваете о параметрах запроса, отредактируйте ваш вопрос, поскольку это требует другого ответа