Ссылки приложения Django теряют домен в Internet Explorer - PullRequest
0 голосов
/ 04 августа 2011

У меня есть страница на Django, работающая на Apache с mod_wsgi. В Firefox все работает отлично. Однако, когда я переключаюсь на Internet Explorer, ни одна из моих ссылок не работает. Все они отбрасывают доменную часть ссылки.

Например, в Firefox, если я наведу курсор мыши на одну из моих ссылок, я вижу что-то вроде этого: http://mydomain.edu/pathtomystuff/linkpage/ и это работает.

Однако в Internet Explorer та же самая ссылка показывает это, когда я наводю на него курсор мыши: Http: /// pathtomystuff / linkpage / и, очевидно, не работает.

Если я вручную ввожу адрес в Internet Explorer, он работает нормально. Это просто ссылки.

Это, наверное, что-то очевидное и безумное. Пожалуйста, прости меня:)

UPDATE Ну, я понял, что-то вроде «решения». У меня был базовый href = {{request.path}} в моем базовом html-файле (который расширяет все остальные страницы моего сайта). При просмотре исходного кода, показанного IE и Firefox, оба увидели BASE href =, что означает, что request.path не передавался моему шаблону. Поэтому я изменил его на BASE href = mydomain.edu, и теперь он работает в IE.

Это не очень удачное решение, потому что оно отвлекает от переносимости приложения django ...

1 Ответ

0 голосов
/ 05 августа 2011

Если вы хотите сохранить переносимость (а также удобство сопровождения), самый простой и «джангонистский» способ - использовать теги {% url%} в ваших шаблонах.

Обратите внимание, что {Тегу% url%} следует передать представление в качестве «аргумента», например: {% url myApp.views.myView foo = 'bar'%} будет использовать ваш urlconf для создания соответствующего URL, который будет указывать на представление myApp, называемоеmyView, со значением 'bar', переданным как аргумент 'foo'.

Конечно, вам не нужны аргументы во всех ваших представлениях, часть foo = 'bar' является необязательной (пожалуйста, обратите вниманиечто вы не должны указывать аргумент запроса)

Наиболее распространенным вариантом будет использование синтаксиса, такого как:

<a href="{% url myApp.views.myView foo='bar' %}">MyLink</a>

По сути, здесь вы пытаетесь заново изобрестиURL-тег, он уже существует, так что используйте его!:)

...