Django: как открывать локальные html-файлы прямо в браузере со ссылками типа href=file:///C:/path/file.html

Я делаю приложение 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» работать на сгенерированных динамических страницах?


person user725074    schedule 26.04.2011    source источник


Ответы (2)


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

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 («Дополнительно» -> «Доверенные» -> «Разрешить локальные ссылки»).

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

person user725074    schedule 30.04.2011

: неправильно. Вместо этого используйте |.

<a href="file:///C|/somepath/mylocalfile.html">Title of local file</a>
person Ignacio Vazquez-Abrams    schedule 26.04.2011
comment
Нет, этот формат не работает ни на сгенерированной странице, созданной django; только если он сохраняется и загружается в браузере (как и раньше), а не для Firefox (он меняет | на %7C) в URL-адресе. это работает для вас в приложении django? - person user725074; 26.04.2011