【问题标题】:Jquery - updating Background cssJquery - 更新背景 css
【发布时间】:2012-04-14 03:58:38
【问题描述】:

我正在使用 Jquery 表单插件 http://jquery.malsup.com/form/#ajaxForm 通过 ajax 将图像上传到用 Django 编程的服务器端。上传图像时,它会自动将背景更改为该图像。一切都很完美(图像存储在数据库中并返回响应)但是如何使用该 responseText 更新 css。

这是我的 javascript 代码:https://gist.github.com/2381991

Django 响应:

 url('home/nirmal/try/files/background/monalisa.jpg')

Django 视图.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:
                g.background = request.FILES['background']
                g.save()
            return HttpResponse("url('"+g.background.url+"')")
    else:
        form = BackgroundModelForm()
        return render_to_response("cover.html", {'form': form}, context_instance=RequestContext(request))

我不知道如何在 jquery 中更新 css: background-image: url()。 谁能帮帮我?

谢谢!

【问题讨论】:

    标签: javascript python django jquery


    【解决方案1】:

    在jQuery表单插件的showResponse回调中,选择你想要应用背景图片的元素,使用.css方法设置背景图片:

    $("#some_element_id").css("backgroundImage", "url('/relative/address/to/image.jpg')");
    

    注意:您需要使用相对于网络根目录的图像路径,而不是您的主目录。

    【讨论】:

      【解决方案2】:

      首先,您的客户端 jQuery 期望什么 mimetype 响应?你的代码在HttpResponse 中返回text/html,你可以.css('background-image', response_data)

      其次,g.background.url 看起来不正确,你的 MEDIA_URL 在设置中是什么?

      此外,请检查您的问题Model has no attribute _committedg.background = request.FILES['background'] 这里不检查图像类型,并且可以允许上传和存储任何类型的文件。

      【讨论】:

      • 我可以将这个 g.background = form.save(commit=False).background 用于 ModelForm 吗?如何检查图像类型?
      • @mk update MEDIA_URL to '/files/', MEDIA_ROOT to '/home/try/files' 因为它是一个绝对路径。
      • 如何检查模型表单中的图像类型?
      • @mk ModelForm 自动使用forms.ImageFieldmodels.ImageField 做检查
      • @mk 引用 settings.py 中的注释:“处理从 MEDIA_ROOT 提供的媒体的 URL。确保使用尾部斜杠。”。此外,MEDIA_URL 必须是 URL,'/files/' 或 'http://localhost:8000/files/' 都可以,但在生产中您需要生成访问者可以访问的 URL,例如 http://example.com/files/ 而不是 localhost
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 2013-01-15
      相关资源
      最近更新 更多