在Django中成功提交表单后通过JavaScript/jQuery发送通知

0 投票
1 回答
1032 浏览
提问于 2025-04-18 03:22

我刚开始学习JavaScript和相关的库与框架,现在在努力实现一个功能,就是在用户成功提交表单后给他们发送通知。我有一个项目是用Django开发的,这个项目里有一个图片上传的表单。下面是这个图片上传表单的views.py代码...

from django.shortcuts import render_to_response,RequestContext
from photo.models import Photo
from django.contrib.auth.decorators import login_required
from myprofile.forms import DocumentForm
from django.contrib.auth import authenticate, login, logout, REDIRECT_FIELD_NAME

def UserImageUpload(request):

    if request.method == 'POST':
         form = DocumentForm(request.POST,request.FILES)
         if form.is_valid():

             newdoc = Photo(photo = request.FILES['photo'],user = request.user)
             newdoc.save()


    else:
         form = DocumentForm()

    uploaded_image = Photo.objects.all()

    return render_to_response('myprofile/user_image_upload.html',{'uploaded_image':uploaded_image,'form':form},context_instance = RequestContext(request))

这是forms.py的代码...

from django import forms

class DocumentForm(forms.Form):
     photo = forms.ImageField(
          label='Select a file'

     )

还有这个模板文件...(upload_image.html)

 {% extends 'base.html'%}
 {% block title%}User Image Upload {% endblock %}
 {%block content%}
 <div class="container" style="margin-top:5%">
      <div class="col-md-4 col-md-offset-4">
          <div class="well">
      <form action="" method="post" enctype="multipart/form-data">
            {% csrf_token %}
            <p>{{ form.non_field_errors }}</p>
            <p>{{ form.photo.label_tag }} {{ form.photo.help_text }}</p>
            <p>
                {{ form.photo.errors }}
                {{ form.photo }}
            </p>

            <p><input type="submit" value="Upload" class="btn btn-success" /></p>


    </form>
    </div>
  </div>
 </div>

 {%endblock%}

现在我想在用户成功上传图片后给他们发送通知,或者说是在成功提交表单后给他们提示。我该如何用JavaScript或jQuery来实现这个功能呢?

1 个回答

0

通常情况下,在表单成功提交后,你会想要进行重定向,也就是说:

 if form.is_valid():
      newdoc = Photo(photo = request.FILES['photo'],user = request.user)
      newdoc.save()
      return http.HttpResponseRedirect('....')

如果你是在做类似于 Ajax 的表单提交,那么你需要返回一些 Ajax 调用能够理解为成功的内容,比如:

 if form.is_valid():
      newdoc = Photo(photo = request.FILES['photo'],user = request.user)
      newdoc.save()
      response = http.HttpResponse(json.dumps({"status": 'ok'}))
      response["Content-Type"] = 'application/json'
      return response

撰写回答