django - valueError

时间:2012-05-23 11:42:09

标签: javascript jquery python django

我正在开发一个Web应用程序,我在一个功能中遇到问题。你可以在这里查看http://qlimp.com你也可以用这个用户名/密码:dummy / dummy

登录后,请点击链接转到封面设置您将看到一个调色板,您可以在其中上传图片,输入一些文字。

当你上传图片时,我在jQuery中写了一个ajax请求,它将图像上传到服务器并显示该图像的整页背景预览。

JQuery的

$('#id_tmpbg').live('change', function()
    {
    $("#ajax-loader").show();
    $("#uploadform").ajaxForm({success: showResponse}).submit();
    });

function showResponse(responseText, statusText, xhr, $form)  { 
    $.backstretch(responseText)
    $("#ajax-loader").hide();
}

所以这里的问题是,当我上传图片时,它会显示

ValueError at /cover/ 
The view cover.views.backgroundview didn't return an HttpResponse object. 
Request Method: POST Request URL: http://qlimp.com/cover/ 

我实际上是在视图中返回HttpResponse对象。

Views.py:

@login_required
def backgroundview(request):
    if request.is_ajax():
        form = BackgroundModelForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                g = BackgroundModel.objects.get(user=request.user)
            except BackgroundModel.DoesNotExist:
                data = form.save(commit=False)
                data.user = request.user
                data.save()
            else:
                if g.tmpbg != '' and g.tmpbg != g.background:
                    image_path = os.path.join(settings.MEDIA_ROOT, str(g.tmpbg))
                    try:
                        os.unlink(image_path)
                    except:
                        pass
                data = BackgroundModelForm(request.POST, request.FILES, instance=g).save()
            return HttpResponse(data.tmpbg.url)
    else:
        form = BackgroundModelForm()
        return render_to_response("cover.html", {'form': form}, context_instance=RequestContext(request))

Models.py:

class BackgroundModel(models.Model):
    user = models.OneToOneField(User)
    background = models.ImageField(upload_to='backgrounds', null=True, blank=True)
    tmpbg = models.ImageField(upload_to='backgrounds', null=True, blank=True)

class BackgroundModelForm(ModelForm):
    class Meta:
        model = BackgroundModel
        exclude = ('user','background')

但是这些东西在我的电脑上工作(保存图像并显示背景预览)但不在生产服务器中。为什么会这样? 我已将相同的代码上传到服务器。

有人能帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果表单有效,您不会返回回复。