2013-08-13 5 views
1

Я могу получить доступ к статическому файлу через прямой url (localhost:8000/static/maps/foo.txt), поэтому, я думаю, у меня все хорошо работает. Но я не могу сделать следующее: я хочу открыть этот текстовый файл в views.py. Это потому, что я работаю над простой приключенческой игрой в веб-браузере, и я хотел хранить карты в статических/картах и ​​загружать эти карты, используя f=open('/static/maps/' + mapname + '.txt', 'r'). Я получаю IOError: no such file or directory. Я действительно не понимаю, потому что там есть такой каталог, когда я его ищу в адресе.Можно ли получить доступ к статическим файлам в views.py?

Это можно сделать как-то?

+2

'/ static/maps /' будет находиться в директории с именем 'static' в корневой папке файловой системы вашего компьютера, а не на локальном URL/статике, который, вероятно, будет отправлен из другого места. – geoffspear

+0

Да, и это моя проблема. Как указать на статический каталог вместо корня машины? – Dunno

ответ

0

Вам необходимо использовать место, где они хранятся на диске, что, вероятно, находится в settings.STATIC_ROOT или settings.STATICFILES_DIRS, а не в том месте, где они обслуживаются веб-приложением.

Обратите внимание, что если вы программно изменяете эти файлы, они не являются (по определению) статическими файлами. Вам будет лучше использовать местоположение MEDIA_ROOT. Также обратите внимание, что у Django есть помощники, чтобы делать такие вещи - см. Документацию по адресу Managing files.

+0

Но похоже, что использование статических файлов dirs зависит от используемой машины. Сейчас я запускаю сервер разработки, так что все в порядке, но что, если я попытаюсь загрузить проект на веб-сервер? Или в хранилище git? Будет ли это требовать дополнительного внимания? Благодаря! – Dunno

+0

Вот почему вы используете значение из настроек, а не жестко кодируете его в своем представлении. –

+0

Я не понимаю :(Мой мозг просто не может обернуть вокруг этого. Так что 'settings.STATICFILES_DIRS' возвращает каталог глобальных статических файлов? Или, может быть, я должен использовать статический корень и все остальные, участвующие в этой копии проекта статические файлы в свой корень? Помогите этому бедному нубу понять, как все это работает! Спасибо – Dunno

Смежные вопросы