Правильный способ обслуживания статических файлов, загруженных пользователем, для django-adminfiles - PullRequest
2 голосов
/ 21 сентября 2011

Я пытаюсь добавить django-adminfiles в один из моих проектов django (блог Zinnia).
Я использую Django 1.3 со следующей конфигурацией:

# setttings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(current_dir, 'static_collected')
STATICFILES_DIRS = (
    '/path/to/myproject/src/django-adminfiles/adminfiles/media',
...)

# urls.py
urlpatterns += staticfiles_urlpatterns()
urlpatterns += patterns('',
    url(r'^adminfiles/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': os.path.join(parent_dir, 'adminfiles')}),)

Затем я запускаю bin/manage collecstatic для сбора статических файлов (я использую buildout с djangorecipe).
Затем я могу загрузить файлы, используя интерфейс администратора, но миниатюры не появляются ни в интерфейсе администратора, ни на общедоступном веб-сайте, и у меня есть 404 ошибки в выводе django:

# If I go to the admin interface at /admin/zinnia/entry/2/
[21/Sep/2011 09:39:16] "GET /adminfiles/all/adminfiles/fluxboxwall_jpg_144x150_q85.jpg HTTP/1.1" 404 1886
[21/Sep/2011 09:39:16] "GET /adminfiles/all/adminfiles/DD_jpg_144x150_q85.jpg HTTP/1.1" 404 1859

# If I visit my public located at /blog
[21/Sep/2011 09:36:02] "GET /blog/adminfiles/fluxboxwall.jpg HTTP/1.1" 404 6758
# This file can be accessed through /adminfiles/fluxwall.jpg
[21/Sep/2011 09:36:02] "GET /blog/adminfiles/DD.jpg HTTP/1.1" 404 6731
# This file can be accessed through /adminfiles/DD.jpg

Я могу заставить работать django-adminfiles, добавив косые черты в их шаблоны:

templates / adminfiles / uploader.html, строка 37 , для миниатюр в интерфейсе администратора
<li class="item {{f.content_type}} {{f.sub_type}}" {% if f.is_image %}style="background-image:url( / {% thumbnail f.upload 144x150 %});"{% else %}{% if f.mime_image %}style="background-image:url({{ f.mime_image }});"{% endif %}{% endif %}>

templates / adminfiles / default.html, строка 2 , чтобы мои фотографии отображались в моем общедоступном блоге
<img src=" / {{ upload.upload.url }}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" />

Однако, я думаю, мне не нужно взламывать шаблоны, чтобы заставить работать django-adminfiles. У меня ощущение, что что-то не так в моей конфигурации django, но я не знаю, что.

1 Ответ

0 голосов
/ 11 декабря 2011

У вас тут "маленький" беспорядок ИМХО.

Из того, что я понимаю, если вы настроили STATIC_URL = '/ static /', тогда это должно быть зонтиком для всех ваших статических файлов, таких как:

/static/blog/a_public_file.jpg
/static/adminfiles/DD.jpg
/static/other/app/file.jpg

Также помните, что вы можете добавить статические средства поиска файлов https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders, и у вас уже может быть эта настройка, иногда использование STATICFILES_DIRS сбивает с толку.

Я предлагаю вам проверить все настройки статических файлов с нуля, прежде чем идти дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...