【问题标题】:Django jquery ajax image uploadDjango jquery ajax 图片上传
【发布时间】:2012-04-13 15:13:46
【问题描述】:

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

我的 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 视图.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 设置.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'), 

谁能帮帮我?

谢谢!

【问题讨论】:

    标签: javascript python django jquery


    【解决方案1】:

    文件在 request.FILES 而不是 request.POST。您没有看到任何错误,因为您从未确认 b 确实有一个值,但我很惊讶您没有看到背景不能为空的错误。

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

    【讨论】:

    猜你喜欢
    • 2015-03-05
    • 2015-10-30
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    相关资源
    最近更新 更多