Python / Django: как добавить # ко всем URL - PullRequest
2 голосов
/ 21 января 2011

Я создаю мобильное веб-приложение с Django и jQuery Mobile. Моя проблема в том, что jQuery Mobile любит, когда перед всеми ссылками стоит # , поэтому он может точно отслеживать историю просмотров.

Пример: http://www.fest.com/#/foo/1/

Я хотел бы знать, как автоматически перенаправить все URL, которые указывают От: / foo / 1 / Кому: / # / foo / 1 /

Если я этого не сделаю и кто-то сразу перейдет на / foo / 1 / , то перейдет по ссылке, указывающей на / bar / 2 / , они получат URL-путь, подобный следующему: / Foo / 1 / # / бар / 2 /

Я бы очень хотел предотвратить это, потому что это вызывает много проблем. Какой лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Вы неправильно поняли, что делает #.

# в URL - это разделитель фрагментов. Ничего после этого не отправляется на сервер . Таким образом, не существует такого URL как «foo. Com # / foo» - что касается сервера, это просто «foo.com» Таким образом, вы не можете выполнять перенаправление на стороне сервера.

Если ваша библиотека JS использует фрагменты для имитации навигации, вам придется справиться с этим с помощью Javascript.

0 голосов
/ 21 января 2011

Это jquery mobile, поэтому ответ немного другой.Jquery mobile использует #something для истории при работе с AJAX.Вызов AJAX вводится для каждого <a href=...

Так что вы просто ссылаетесь на страницу, подобную этой: <a href="some.html?var1=foo", и JQM вызывает на ней ajax без перезагрузки страницы И сохраняет элемент в документе DOM, чтобы незагрузить снова.URL-адрес обновлен и теперь имеет #some.html в конце. Это история управления.

<a href="#something" НЕ будет работать как на обычной странице, потому что jquery mobile вступает во владение.

Читайте здесь, чтобы получить всю информацию о ссылках в jquery mobile: http://jquerymobile.com/demos/1.0a2/#docs/pages/link-formats.html

...