我正在使用sigurdga/django-jquery-file-upload来处理多个上传图像,所以我想在用户进入页面时实现这一点。他上传的照片出现在页面中,有没有办法初始化一个django CreateView,所有对象都像ListView一样显示?
我有这个创建视图:
class PictureCreateView(CreateView):
model = Picture
fields = "__all__"
template_name = 'fileupload/picture_form.html'
# form_class = PictureForm
# def get_initial(self):
# initial = super(PictureCreateView, self).get_initial()
# initial = initial.copy()
# files = [serialize(p) for p in self.get_queryset()]
# data = {'files': files}
# response = JSONResponse(data, mimetype=response_mimetype(self.request))
# response['Content-Disposition'] = 'inline; filename=files.json'
# return response
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.usuario_id = self.request.user.id
self.object.save()
usuario = User.objects.get(id=self.request.user.id)
if usuario:
photos = Picture.objects.filter(usuario_id=usuario.id)
for photo in photos:
photo.usuario_id = self.request.user.id
photo.save()
files = [serialize(self.object)]
data = {'files': files}
response = JSONResponse(data, mimetype=response_mimetype(self.request))
response['Content-Disposition'] = 'inline; filename=files.json'
return response
def form_invalid(self, form):
data = json.dumps(form.errors)
return HttpResponse(content=data, status=400, content_type='application/json')
列表显示
class PictureListView(ListView):
model = Picture
template_name = 'fileupload/picture_list.html'
html
{% extends "fileupload/upload_base.html" %}
{% block content %}
<ul>
{% for picture in object_list %}
<img src="/media/{{ picture.file }}" />
{% endfor %}
</ul>
{% endblock %}