Thank you, that is a very helpful suggestion. However, I have a followup question. What are my options if:
1. It is okay to be slow (low performance), and 2. The method must work on any webserver, not necessarily or specifically Apache or Nginx. In pure Python/Django, how do I open a file on the hard disk and put it into an HttpResponse object? Is FileWrapper involved? How come I can't find any documentation on 'FileWrapper' by searching djangoproject.org? Thanks again, Zak On Nov 8, 5:25 pm, Ian Clelland <clell...@gmail.com> wrote: > On Tue, Nov 8, 2011 at 2:11 PM, zak2011 <zak2...@m.allo.ws> wrote: > > Dear Django Users, > > > tl;dr: Please tell me what strategies I might use to serve a large > > static file from within Django, from views.py. > > > If I want to limit access to a particular page in a Django app, I can > > do something like this in views.py: > > > (Note: I will use four periods to indent, because spaces or tabs might > > not display properly.) > > > def private_page(request): > > ....if special_permissions_checking_function(request.user): > > ........return render_to_response('private_page_template.html') > > ....else: > > ........return render_to_response('access_denied.html') > > > What if I want to limit access to a large static file, instead of a > > dynamically generated HTML template? > > The fastest way to do this is to tell the web server to serve the file from > a protected location. Apache and nginx both have ways to signal from python > code that a file should be read from disk and streamed to the user. This > file doesn't have to be in a location which is accessible through a normal > web request; ideally all access to it would be through your app, and you > can do whatever access checks that you want to before serving it. > > Look up X-SENDFILE for Apache, or X-Accel-Redirect for nginx for the > details. > > Ian > > > > > Ideally the resulting website will be fast, but I also want to hear > > options that might be low performance. > > > Thank you, > > > Zak > > > -- > > You received this message because you are subscribed to the Google Groups > > "Django users" group. > > To post to this group, send email to django-users@googlegroups.com. > > To unsubscribe from this group, send email to > > django-users+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/django-users?hl=en. > > -- > Regards, > Ian Clelland > <clell...@gmail.com> -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.