我正在开发一个 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')
但是这些东西在我的电脑上工作(保存图像并显示背景预览)但不在生产服务器上。为什么会这样?我已将相同的代码上传到服务器。
有人可以帮我吗?谢谢!