我正在使用jquery表单插件http://jquery.malsup.com/form/#getting-started将图像上传到django服务器端。没有错误,但是图像未存储在MEDIA_ROOT路径中。在过去的2天里,我尝试了各种技术(尝试使用插件),但没有任何效果。下面,我已尽力简化了您的工作。

我的HTML代码:

<form id="uploadform" method="post" enctype="multipart/form-data" action="background/">
<input type="file" name="photoimg" id="photoimg" />
</form>


JavaScript代码:

https://gist.github.com/2377516

Django Models.py:

class BackgroundModel(models.Model):
    user = models.OneToOneField(User)
    background = models.ImageField(upload_to='backgrounds')


Django views.py:

    def backgroundview(request):
        if request.is_ajax():
            b = request.POST.get('photoimg')
        try:
            g = BackgroundModel.objects.get(user=request.user)
        except BackgroundModel.DoesNotExist:
            bm = BackgroundModel(background=b)
            bm.user = request.user
            bm.save()
        else:
            g.background = b
            g.save()
        return HttpResponse("")


Django settings.py:

MEDIA_ROOT = '/home/nirmal/try/files/'
MEDIA_URL = 'http://localhost:8000/files/'


Django urls.py:

url(r'^cover/$', login_required(direct_to_template), {'template': 'cover.html'}),
url(r'^cover/background/$', 'cover.views.backgroundview'),


有人可以帮我吗?

谢谢!

最佳答案

文件在request.FILES中而不是request.POST中。您不会看到任何错误,因为您从未确认b确实有值,尽管令您惊讶的是,您没有看到背景错误不能为null。

另外,您应该为此尝试使用ModelForm。它将包装很多您必须编写的行为。

10-05 20:18
查看更多