Javascript django-valueError

Javascript django-valueError,javascript,jquery,python,django,Javascript,Jquery,Python,Django,我正在开发一个web应用程序,其中一个功能出现了问题。你可以在这里查看,你也可以用它作为用户名/密码:dummy/dummy 登录后,请单击链接转到封面设置您将看到一个调色板,您可以在其中上载图像,输入一些文本 当您上传图像时,我在jQuery中编写了一个ajax请求,它将图像上传到服务器,并显示该图像的完整页面背景预览 JQuery $('#id_tmpbg').live('change', function() { $("#ajax-loader").show();

我正在开发一个web应用程序,其中一个功能出现了问题。你可以在这里查看,你也可以用它作为用户名/密码: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')
但是这些东西在我的计算机上工作(保存图像并显示背景预览),但在生产服务器上不起作用。为什么会这样? 我已将相同的代码上载到服务器


有人能帮我吗?谢谢

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

本地使用哪个操作系统,生产使用哪个操作系统?两者都是Ubuntu。我在产品上使用Ubuntu12.04是表单验证吗?查看代码,如果form.is_active()为False,则不会返回任何内容。我不确定这是否有效,但尝试在每个条件下返回HttpResponse。就像你没有写过[if form.is_valid()]的else部分一样,那么写else部分并返回HttpResponse。并且你正在发出ajax请求,所以首先将render_存储到某个字符串变量中,然后将该变量作为[return HttpResponse(stringvariable)]@Mikael我希望它正在验证,因为我的开发服务器没有问题。但我在生产中还有一些问题。从开发到生产,为什么会有这种差异?这是什么原因呢?
HttpResponse()
?它处于外部的真实状态
if
;有两个
if
,对于外部
if
两个条件都有一个返回,但是内部
if
不会在所有执行路径上返回
HttpResponse
。我需要做哪些更改?我给出的代码在我的计算机上运行。你可以把你的第二行到最后一行放在顶部附近
form=BackgroundModelForm()
,去掉最后一行
else
,将最后一行移到左边(缩进)<代码>返回render\u to\u response(…@BurhanKhalid我在生产中使用sqlite3。这会造成这个问题吗?因为生产中的每一个代码都在我的计算机上完美地工作。