Django: как открыть локальные HTML-файлы прямо в браузере с помощью ссылок, таких как href = "file: /// C: /path/file.html" - PullRequest
0 голосов
/ 26 апреля 2011

Я создаю приложение django для индексации своей коллекции локальных файлов (html, text, pdf, ...), которые я храню в разных разделах и каталогах, чтобы можно было легко искать по имени, дате, названию,и т.д. файлов.Это как предварительный поиск, утилита Unix.Он генерирует динамическую страницу со ссылками на файлы, и в случае html-файлов я должен щелкнуть и загрузить локальный файл в браузер.Созданная страница содержит ссылки, такие как:

<a href="file:///C:/somepath/mylocalfile.html">Title of local file</a></li>

Проблема в том, что когда я нажимаю, ничего не происходит, даже сообщения об ошибках.Если я сохраню сгенерированную html-страницу и сразу открою ее в браузере, она будет работать нормально.Я думаю, что это не работает из-за проблем безопасности, но я не претендую на использование его в качестве веб-приложения через Интернет, а в качестве локального приложения.Я использую сервер разработки django.Я знаю, что django может обслуживать статические файлы, помещая их в определенный каталог, но это не то, что мне нужно (файлы находятся в разных местах);Я хочу загружать файлы в браузере как локальные файлы, а не через сервер.Можно ли это сделать?

Есть ли способ в django, чтобы схема "file: /// C: /path/file.html" работала в сгенерированных динамических страницах?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

Проблема не имела ничего общего с django, кроме браузера (в моем случае firefox 4).Firefox не позволяет ссылаться на локальные файлы с удаленных сайтов из соображений безопасности.Я должен отключить эту проверку безопасности для http://localhost:8000, и это сработало.Поскольку изменение касается только localhost, это не должно быть проблемой безопасности. По этой ссылке объясняется, как это сделать:

http://kb.mozillazine.org/Links_to_local_pages_don%27t_work По сути, все, что вам нужно сделать, это создать файл user.js в вашемПапка профиля Firefox с этим:

user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites", "http://localhost:8000");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");

Если вы используете noscript, вам также необходимо изменить некоторые настройки: Параметры NoScript («Дополнительно -> Доверенные ->« Разрешить локальные ссылки »).

Другие браузеры могут иметь эту проверку безопасности, поэтому вам придется вносить различные изменения в соответствии с используемой операционной системой и браузером.

0 голосов
/ 26 апреля 2011

: неверно.Используйте | вместо.

<a href="file:///C|/somepath/mylocalfile.html">Title of local file</a>
...