我正在开发一个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')
但是这些东西在我的电脑上工作(保存图像并显示背景预览)但不在生产服务器中。为什么会这样? 我已将相同的代码上传到服务器。
有人能帮帮我吗?谢谢!
答案 0 :(得分:0)
如果表单有效,您不会返回回复。