шаблоны URL-адресов django и angular
Вопрос
Иногда в своем коде я передаю параметры get с URL-адресами.Один конкретный сценарий заключается в том, что если пользователь не вошел в систему, но вводит URL-адрес страницы, требующей входа в систему, ему необходимо будет сначала войти в систему.
В этом случае у меня может быть такой URL-адрес, как: www.example.com/home/#/main/
.
Конец URL-адреса /#/main/
предназначен для angular.Однако в django, когда я выполняю приведенное ниже действие, чтобы получить next
параметр выше, я делаю это:
self.request.GET.get('next', self.redirect_url)
Проблема в том, что в данном случае, next
предоставляет все, кроме угловой части, так что я получаю: www.example.com/home/
.
Есть ли способ получить и оставшуюся часть URL-адреса?
Решение
Вы должны закодировать URL-адрес, прежде чем добавлять его в качестве параметра.Тогда он превратится в % 23 и больше не будет разделителем для привязки, который обрабатывается на стороне клиента только так, как описано в KVISH.
Другие советы
Очевидно, вы не можете.Django даже не видит привязку, все это обрабатывается клиентом (браузером).
Как определить привязку в URL-адресе в Django?
Способ, которым я справился с этим, заключается в том, что я использую jQuery для установки скрытого поля ввода в местоположение хэша, которое может быть получено следующим образом:
window.location.hash
Хэш отправляется вместе с формой, и я могу взять его оттуда.