0

我正在开发一个 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 对象。

视图.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))

模型.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')

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

有人可以帮我吗?谢谢!

4

1 回答 1

0

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

于 2012-05-23T13:15:17.827 回答