Я создаю веб-сайт с Django, размещенным на PythonAnywhere. Одна из страниц веб-сайта — это частная страница, которую я использую для создания контента, который затем будет отображаться на общедоступных страницах. Вместо того, чтобы сохранять контент, созданный на частной странице, в базу данных, а затем извлекать его из базы данных, я хотел бы сохранить его в статических файлах в моем статическом каталоге (это небольшое количество файлов JSON, которые будут обслуживаться снова и снова опять же, поэтому я думаю, что имеет смысл использовать их как статические файлы).
В представлении, которое определяет мою личную страницу, у меня есть следующий код для сохранения файла:
json=request.POST.get('json')
name=request.POST.get('name')
file=open(settings.STATIC_ROOT+'/'+name+'.json','w')
file.write(json)
file.close()
Обратите внимание, что я ранее импортировал настройки:
from django.conf import settings
Странно, какое-то время это работало, но потом перестало работать. Ошибка, которую я получаю:
Exception Value: 'function' object has no attribute 'STATIC_ROOT'
Я делаю что-то неправильно? Имеет ли значение тот факт, что я на PythonAnywhere? Возможно ли, что приложение обслуживается работником, который не может писать в мой статический каталог? Что я могу сделать, чтобы решить проблему?
os.path.join
в своем заявленииopen
. Также проверьте права доступа к своим папкам. Это работает на вашей машине разработки? - person Wtower   schedule 24.05.2015os.path.join
не решит вашу проблему, но это хорошая практика: stackoverflow.com/questions/13944387/ Что касается разрешений, обычно оно должно быть доступно только для чтения, но для вашего конкретного случая, очевидно, вам требуются права на запись. - person Wtower   schedule 24.05.2015Exception Value: 'function' object has no attribute 'STATIC_ROOT'
предполагает, что переменнаяsettings
в вашем вызовеopen
была заменена функцией. У вас есть код, который определяет функцию с именемsettings
между импортом и открытием? - person Giles Thomas   schedule 24.05.2015