Is it possible to show a PDF file in the Django view, rather than making the user have to download it to see it?
And if it is possible, how would it be done?
This is what I have so far -
@login_required def resume(request, applicant_id): #Get the applicant's resume resume = File.objects.get(applicant=applicant_id) fsock = open(resume.location, 'r') response = HttpResponse(fsock, mimetype='application/pdf') return response
Simplistically, if you have a PDF file and you want to output it through a Django view, all you need to do is dump the file contents into the response and send it with the appropriate mimetype.
def pdf_view(request): with open('/path/to/my/file.pdf', 'r') as pdf: response = HttpResponse(pdf.read(), mimetype='application/pdf') response['Content-Disposition'] = 'inline;filename=some_file.pdf' return response pdf.closed
You can probably just return the response directly without specifying Content-Disposition, but that better indicates your intention and also allows you specify the filename just in case the user decides to save it.
Also, note that the view above doesn't handle the scenario where the file cannot be opened or read for whatever reason. Since it's done with
with, it won't raise any exceptions, but you still must return some sort of response. You could simply raise an
Http404 or something, though.