简体   繁体   中英

List uploaded files in django

How can I list files after they have been uploaded? I want to display them so they can be viewed and downloaded later.

Here is my code.

models.py

class UploadFile(models.Model):
    file = models.FileField(upload_to='files/%Y/%m/%d')

forms.py

class UploadFileForm(forms.ModelForm): pass

class Meta:
    model = UploadFile

views.py

@login_required(login_url='/accounts/login/')
def home(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            new_file = UploadFile(file = request.FILES['file'])
            new_file.save()
            return HttpResponseRedirect(reverse('main:home'))
    else:
        form = UploadFileForm()
        data = {'form': form}
        return render_to_response('upload.html', data,
                                  context_instance=RequestContext(request))    

No need to get file back from form and save it - just save it using your model. View have to be something like this:

    @login_required(login_url='/accounts/login/')
    def home(request):
        if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save() # saving model instance
            return HttpResponseRedirect(reverse('main:home'))
        else:
            form = UploadFileForm()

        data = {'form': form}
        return render_to_response('upload.html', data, context_instance=RequestContext(request))   

and after this you can take all uploaded files from your model:

files = [upload_file.file for upload_file in UploadFile.objects.all()]

and show them to user

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM