【问题标题】:Rackspace Cloudfiles and Django CumulusRackspace Cloudfiles 和 Django Cumulus
【发布时间】:2013-07-18 15:39:50
【问题描述】:

从过去 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)

【问题讨论】:

  • 我是新用户,所以我不能发布图片..但是如果你们需要的话,我可以上传它们以供以后参考。
  • 我也不确定这是否是一般的积云或云文件的问题......但我希望我能就我面临的问题得到一些帮助。
  • 您愿意发布指向您网站的链接以便我帮助您调试吗?
  • 我无法直接访问您的管理站点,但我确实在您的站点上创建了一个帐户 (testaccount)。我在个人资料页面上立即出现错误。您可以分享任何其他代码吗?除了这个调试行之外,没有什么明显的弹出给我:photo = Photo.objects.get(username=username) 代码似乎是通过字符串而不是 id 请求用户名(注意 Photo.username 是外键/整数)。

标签: django rackspace-cloud cloudfiles


【解决方案1】:

这是您要求 kyle 的视图功能。

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 %}

我刚刚检查了我可以在托管站点(生产)上查看图像(不知道如何),但在我的开发环境中仍然无法查看。

Kyle,您能否检查一下您的测试帐户在“我的个人资料”页面中是否有企鹅的照片? :) 感谢您的调查 :)

【讨论】:

  • 转到页面,我看到它没有拉起 Penguins.jpg 资源。 :( 但是,我确实注意到照片目录拉起来了(从 URL 中删除了 Penguins.jpg)。你有没有在 Rackspace 中放一张票让他们看那个特定的文件?他们通常反应很快,并尽最大努力帮助。
【解决方案2】:

图像在那里,但可能不在您预期的位置。

您当前网站上的链接:

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

图像/文件的实际位置:

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

%5C\ 而不是 /。这会有所不同,因为它们是键(键是“路径”,值是文件)。您可能想检查这些是如何上传的,并可能将它们规范化为常规斜线(这些是在您使用 Windows 计算机时上传的吗?)。

【讨论】:

  • 是的,它们是从 Windows 机器上传的。你如何标准化它们?我现在实际上正在使用 django 的管理员来上传它们。
  • 就个人而言,我只需更改 Penguins 文件的路径/名称以使用正确的斜杠或使用正确的路径上传另一个。所有其他人都应该使用 Cumulus 得出相同的结果。为此进行单元测试可能是值得的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
相关资源
最近更新 更多