LINUX.ORG.RU

Django + mod_python


0

0

Это мой первый проект, который заливаю на сервер и столкнулся с такой проблемой.
Django должен создать превью для картинок, но выскакивает ошибка:

Exception Type: TemplateSyntaxError
Exception Value:

Caught an exception while rendering: Attempted access to 'public/gallery/1452_2.jpg' denied.

Original Traceback (most recent call last):
File "/usr/local/lib/python2.5/site-packages/django/template/debug.py", line 71, in render_node
result = node.render(context)
File "/usr/local/lib/python2.5/site-packages/django/template/defaulttags.py", line 148, in render
nodelist.append(node.render(context))
File "/usr/local/lib/python2.5/site-packages/django/template/debug.py", line 87, in render
output = force_unicode(self.filter_expression.resolve(context))
File "/usr/local/lib/python2.5/site-packages/django/template/__init__.py", line 559, in resolve
new_obj = func(obj, *arg_vals)
File "/home/banzai/data/www/foto-n.kz/foton/gallery/templatetags/thumbnail.py", line 11, in thumbnail
filehead, filetail = os.path.split(file.path)
File "/usr/local/lib/python2.5/site-packages/django/db/models/fields/files.py", line 49, in _get_path
return self.storage.path(self.name)
File "/usr/local/lib/python2.5/site-packages/django/core/files/storage.py", line 204, in path
raise SuspiciousOperation("Attempted access to '%s' denied." % name)
SuspiciousOperation: Attempted access to 'public/gallery/1452_2.jpg' denied.


Понятно что с правами что-то не так. Менял... По всякому, но не помогает, даже "хозяина" файлов и папки поменял на nobody. но ничего не выходит...

Может кто-нибудь сталкивался с такой ошибкой? И как ее можно решить?


У тебя что-то с путями не то. Если посмотреть в сорцы, то этот эксепшн вызывается в следующем случае:

"The final path must be located inside of the base path component (otherwise a ValueError is raised)."

Проверь, что на сервере все пути правильные, нету битых симлинков, и т. п. Права чмодовские тут не при чем.

provaton ★★★★★
()
Ответ на: комментарий от provaton

Вот что в конфиг я прописал:

MEDIA_ROOT = os.path.join(PROJECT_DIR, "media")
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/uploads/'

urls.py
....
(r'^upload/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': os.path.join(PROJECT_DIR,"media"), 'show_indexes': True}),
....

И всеравно не работает...

badil
() автор топика
Ответ на: комментарий от badil

uploads менял на upload... т.е. 's' здесь нипричем :)

badil
() автор топика

Много раз слышал что mod_python глючное поделие, поэтому осмелюсь его антирекомендовать. Под fastcgi django хорошо работает.

Ошибку вызывает safe_join. The final path must be located inside of the base path component (otherwise a ValueError is raised).

Как лечить, думаю, ты знаешь :).

true_admin ★★★★★
()

Несколько раз с таким сталкивался и сталкнулся только что. Попробуй из upload_to = 'bla-bla-bla' убрать первый слеш. В смысле чтоб начиналось там не со слеша.

DeNcHeG
()
Ответ на: комментарий от provaton

> Ты бы хоть знал, что советуешь. Пути там можно указывать только относительно к MEDIA_ROOT.

я как бы пользуюсь кошерным Pylons ;)

phasma ★☆
()
Ответ на: комментарий от phasma

Ну, значит можно и не кормить :) Проголодаешься -- скажи :)

provaton ★★★★★
()
Ответ на: комментарий от badil

>(r'^upload/(?P<path>.*)$', 'django.views.static.serve', >{'document_root': os.path.join(PROJECT_DIR,"media"), 'show_indexes': True})

это только для __разработки__.

Статику нужно отдавать просто апачем.

ps и кстати чему PROJECT_DIR равен?

Minmax
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.