Rackspace Cloudfiles и Django Cumulus

За последние 2 дня я буквально потерял терпение, пытаясь заставить Cloudfiles работать для моего проекта (используя кучевые облака). Вот некоторые из проблем:

1.) Иногда, когда я загружаю любую фотографию с помощью администратора (создание модели и регистрация у администратора)... фотография выглядит так, как будто она загружена, но когда я пытаюсь либо получить к ней доступ, используя функцию просмотра Photo.objects.all() или даже заходя в панель управления cloudfiles... изображение просто не открывается. Я получаю, что ресурс не найден. Я проверяю и дважды проверяю, не ошибаются ли настройки региона (чикаго для меня по умолчанию) .... но я так не думаю.

2.) Я использовал метод collectstatic для успешного сбора всех статических файлов в контейнере, и я могу успешно их обслуживать. на самом деле, когда я нажимаю на ссылку (скажем, например) - http://ed770b871265201bf471-14f03984d90730040890dd30a2d85248.r68.cf2.rackcdn.com/admin/css/base.css

Я могу видеть результаты, и я уверен, что вы тоже можете это увидеть.

Но когда я пытаюсь использовать их с помощью STATIC_URL в своих шаблонах - страницы администратора не работают с CSS, но мои страницы входа/домашние страницы прекрасно отображаются с моими стилями.

Вот мой файл настроек/мои функции просмотра и все, что важно -

STATIC_ROOT = ''
STATIC_URL = 'http://ed770b871265201bf471-14f03984d90730040890dd30a2d85248.r68.cf2.rackcdn.com/'
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR,'static'),
)

CUMULUS = {
    'USERNAME': '***',
    'API_KEY': '****',
    'CONTAINER': 'photos',
    'STATIC_CONTAINER':'static',
    'SERVICENET': False, # whether to use rackspace's internal private network
    'FILTER_LIST': [],
    'TIMEOUT' : 60
}
DEFAULT_FILE_STORAGE = 'cumulus.storage.CloudFilesStorage'
STATICFILES_STORAGE = 'cumulus.storage.CloudFilesStaticStorage'

Часть файла модели

class Photo(models.Model):
    username = models.ForeignKey(User)
    image = models.ImageField(upload_to='photos')
    alt_text = models.CharField(max_length=255)

admin.site.register(Photo)

person Vijay Yellepeddi    schedule 19.07.2013    source источник
comment
Я новый пользователь, поэтому я не могу публиковать изображения ... но я могу загрузить их для справки позже, если вам это нужно.   -  person Vijay Yellepeddi    schedule 19.07.2013
comment
Также я не уверен, является ли это проблемой в отношении кучевых облаков или облачных файлов в целом... но я надеюсь, что получу помощь в отношении проблем, с которыми я столкнулся.   -  person Vijay Yellepeddi    schedule 19.07.2013
comment
Готовы ли вы опубликовать ссылку на свой сайт, чтобы я мог помочь вам отладить?   -  person Kyle Kelley    schedule 19.07.2013
comment
disaster-recipe.com/admin пожалуйста   -  person Vijay Yellepeddi    schedule 19.07.2013
comment
У меня не будет прямого доступа к вашему сайту администратора, но я создал учетную запись на вашем сайте (testaccount). Я получил немедленные ошибки на странице профиля. Любой другой код, которым вы можете поделиться? Ничего очевидного для меня не появляется, кроме этой строки отладки: photo = Photo.objects.get(username=username) Похоже, что код запрашивает имя пользователя по строке, а не по идентификатору (обратите внимание, что Photo.username является внешним ключом/целым числом).   -  person Kyle Kelley    schedule 20.07.2013
comment
позвольте мне взглянуть на это. Попробую обновить код!   -  person Vijay Yellepeddi    schedule 20.07.2013


Ответы (2)


Это функция просмотра, как вы и просили, Кайл.

def profile_detail(request):
        if request.user.is_authenticated():
            username = request.user.get_username()
            # userid = User.objects.get(username=username).values('__id')
            userdetails = User.objects.filter(username=username)
            photo = Photo.objects.get(username=request.user.id)
            return render_to_response('profile_detail.html',{'userdetails':userdetails,'username':username,'photo':photo},
                                        context_instance=RequestContext(request))

и шаблон для profile_detail -

{% extends 'profile.html' %}

{% load bootstrap_toolkit %}

{% block content %}

    <img src="{{ photo.image.url }}" alt="{{ photo.alt_text }}" />
    <br>
    <p>{{ user.first_name }}</p>
    <p>{{ user.last_name }}</p>
    <p>{{ user.email }}</p>

{% endblock %}

Я только что проверил, что могу просматривать изображение (не знаю, как) на размещенном сайте (производстве), но все еще не могу сделать это в своей среде разработки.

Кайл, не могли бы вы проверить, есть ли в вашем тестовом аккаунте изображение пингвинов на странице «Мой профиль»? :) Спасибо за внимание :)

person Vijay Yellepeddi    schedule 20.07.2013
comment
Зашел на страницу, вижу, что не подтягивается ресурс Penguins.jpg. :( Тем не менее, я заметил, что каталог с фотографиями подтягивается (удален Penguins.jpg из URL-адреса). Вы отправили запрос в Rackspace, чтобы они посмотрели на этот конкретный файл? Обычно они отвечают очень быстро и делают все возможное, чтобы помощь. - person Kyle Kelley; 22.07.2013

Изображения есть, но, возможно, не там, где вы ожидали.

Ссылка на ваш текущий сайт:

http://d12df125d01b8a258a3a-8112fdc02f7d385b44f56eb9e899d81c.r88.cf2.rackcdn.com/photos/Penguins.jpg

Где на самом деле находится изображение/файл:

http://d12df125d01b8a258a3a-8112fdc02f7d385b44f56eb9e899d81c.r88.cf2.rackcdn.com/photos%5CPenguins.jpg

%5C это \, а не /. Это имеет значение, поскольку это ключи (ключ — это «путь», а значение — файл). Вы можете проверить, как они были загружены, и, возможно, нормализовать их до обычных косых черт (они были загружены, когда вы работали на компьютере с Windows?).

person Kyle Kelley    schedule 22.07.2013
comment
Да, они были загружены с Windows-машины. как их нормализовать? На самом деле я использую администратора django, чтобы загрузить их на данный момент. - person Vijay Yellepeddi; 23.07.2013
comment
Лично я бы просто изменил путь/имя файла Penguins, чтобы он имел правильную косую черту, или загрузил бы другой с правильным путем. Все остальные должны получиться такими же при использовании Cumulus. Вероятно, для этого стоило бы установить модульные тесты. - person Kyle Kelley; 23.07.2013