【发布时间】:2018-02-01 20:56:39
【问题描述】:
当我附加图像时,它在控制台中返回 null 但它继续发布文本数据,我也希望能够包含图像文件。
注意:当我从 Rest api 管理员端上传图像时,它运行良好并且图像显示,这意味着我的 Ajax 图像上传是缺少的
form.html
<form id='userpost-form' class='form' enctype="multipart/form-data" action="" method="POST" data-filescount=0> {% csrf_token %}
{{ form| crispy }}
<button type="submit" class="btn btn-success btn-sm float-right" id="post_frame">{{ submit_btn }}</button>
</form>
Ajax 改进
$("#userpost-form").submit(function(e) {
e.preventDefault();
var this_ = $(this)
// var formData = this_.serialize()
// console.log("working...")
// console.log(this_.serialize())
var formData = new FormData(this_.serialize());
formData.append('image', this_.get(0));
console.log(formData);
$.ajax({
url: "/api/posts/create/",
data: formData,
method: "POST",
dataType: "json",
success: function(data) {
// console.log(data)
this_.find("input[type=text], textarea").val("")
// this_.find("input[type=file]").val("")
// $('#uploadfrm')[0].reset(); // Reset form data
attachPosts(data, true)
},
error: function(data) {
console.log("error")
},
})
}) //post form end brac
views.py
class PostUserCreateAPIView(generics.CreateAPIView):
queryset = Post.objects.all()
serializer_class = PostDetailSerializer
permission_classes = [permissions.IsAuthenticated]
parser_classes = (MultiPartParser, FormParser,)
def perform_create(self, serializer):
serializer.save(content_object=self.request.user, image=self.request.data.get('image'))
serailizers.py
class PostDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ["id", "user", "content", "image", "date_display",
# "timesince",
]
此代码在没有图像的情况下很好地发布了数据,所以我的挑战是如何包含图像文件
【问题讨论】:
-
请展示你的观点
-
视图和序列化程序已添加@Bear Brown
-
我现在已经改进了代码,正如您在 Ajax 改进文件中看到的那样 -
-
它给出了错误 - Uncaught TypeError: Illegal invocation
标签: jquery ajax django django-forms django-rest-framework