Панель инструментов отладки django - SuspiciousFileOperation: Попытка доступа к /static/_img/A/B/image01.png запрещена
Я недавно установил django-debug-toolbar и у меня проблемы с доступом к статическим файлам на моем промежуточном сервере. Сообщение об ошибке:
SuspiciousFileOperation at /home/
Attempted access to '/static/_img/A/B/image01.png' denied.
Traceback:
File "/home/code/venv/X/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
204. response = middleware_method(request, response)
File "/home/code/venv/X/lib/python3.4/site-packages/debug_toolbar/middleware.py" in process_response
129. bits[-2] += toolbar.render_toolbar()
File "/home/code/venv/X/lib/python3.4/site-packages/debug_toolbar/toolbar.py" in render_toolbar
64. return render_to_string('debug_toolbar/base.html', context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/loader.py" in render_to_string
172. return t.render(Context(dictionary))
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
148. return self._render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/test/utils.py" in instrumented_test_render
88. return self.nodelist.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
844. bit = self.render_node(node, context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render_node
858. return node.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/defaulttags.py" in render
208. nodelist.append(node.render(context))
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/defaulttags.py" in render
312. return nodelist.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
844. bit = self.render_node(node, context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render_node
858. return node.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/defaulttags.py" in render
312. return nodelist.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
844. bit = self.render_node(node, context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render_node
858. return node.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
898. output = self.filter_expression.resolve(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in resolve
596. obj = self.var.resolve(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in resolve
734. value = self._resolve_lookup(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in _resolve_lookup
770. current = getattr(current, bit)
File "/home/code/venv/X/lib/python3.4/site-packages/debug_toolbar/panels/__init__.py" in content
96. return render_to_string(self.template, self.get_stats())
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/loader.py" in render_to_string
172. return t.render(Context(dictionary))
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
148. return self._render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/test/utils.py" in instrumented_test_render
88. return self.nodelist.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
844. bit = self.render_node(node, context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render_node
858. return node.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/defaulttags.py" in render
312. return nodelist.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
844. bit = self.render_node(node, context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render_node
858. return node.render(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/defaulttags.py" in render
208. nodelist.append(node.render(context))
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in render
898. output = self.filter_expression.resolve(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in resolve
596. obj = self.var.resolve(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in resolve
734. value = self._resolve_lookup(context)
File "/home/code/venv/X/lib/python3.4/site-packages/django/template/base.py" in _resolve_lookup
788. current = current()
File "/home/code/venv/X/lib/python3.4/site-packages/debug_toolbar/panels/staticfiles.py" in real_path
34. return finders.find(self.path)
File "/home/code/venv/X/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py" in find
249. result = finder.find(path, all=all)
File "/home/code/venv/X/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py" in find
159. match = self.find_in_app(app, path)
File "/home/code/venv/X/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py" in find_in_app
173. if storage.exists(path):
File "/home/code/venv/X/lib/python3.4/site-packages/django/core/files/storage.py" in exists
265. return os.path.exists(self.path(name))
File "/home/code/venv/X/lib/python3.4/site-packages/django/core/files/storage.py" in path
281. raise SuspiciousFileOperation("Attempted access to '%s' denied." % name)
Exception Type: SuspiciousFileOperation at /A/
Exception Value: Attempted access to '/static/_img/A/B/image01.png' denied.
Сообщение об ошибке появляется только тогда, когда я изменяю настройку на DEBUG = True. Я не думаю, что это проблема с правами доступа к папке для статической папки, поскольку изображения загружаются нормально, когда DEBUG = False.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Я разместил правильный трекбек.
конфиг статических файлов (из settings.py):
STATIC_URL = "/static/"
STATICFILES_DIR = ( "/var/www/html/static", )
STATIC_ROOT = os.path.join(BASE_DIR, "static")
INSTALLED_APPS = (
...
"django.contrib.staticfiles",
...
)
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
"django.contrib.staticfiles.finders.FileSystemFinder",
"compressor.finders.CompressorFinder"
)
0 ответов
У меня была такая же проблема на нашем сценическом сервере. Я добавил
DEBUG_TOOLBAR_PANELS
в файл настроек и удалил
debug_toolbar.panels.staticfiles.StaticFilesPanel
пункт относительно значений по умолчанию. Это всего лишь обходной путь, прежде чем будет найдено лучшее решение.
Ниже
DEBUG_TOOLBAR_PANELS
Добавил в настройки:
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel',
]
У меня сейчас проблема с запущенным локально проектом в режиме отладки. Я думаю, что есть одна функция, которая добавляет обратную косую черту, но этого не должно быть. Ошибка может быть воспроизведена и сравнена с правильным относительным именем файла, используя это:
python3 manage.py findstatic /css/bootstrap.min.css
python3 manage.py findstatic css/bootstrap.min.css
Есть изменение, что у вас неправильный шаблон: например
<link href="{% static '/css/bootstrap.min.css' %}" rel="stylesheet">
вместо
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">