views.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from django.contrib.flatpages.models import FlatPage
  2. from django.template import loader, RequestContext
  3. from django.shortcuts import get_object_or_404
  4. from django.http import HttpResponse
  5. from django.conf import settings
  6. DEFAULT_TEMPLATE = 'flatpages/default.html'
  7. def flatpage(request, url):
  8. """
  9. Flat page view.
  10. Models: `flatpages.flatpages`
  11. Templates: Uses the template defined by the ``template_name`` field,
  12. or `flatpages/default.html` if template_name is not defined.
  13. Context:
  14. flatpage
  15. `flatpages.flatpages` object
  16. """
  17. if not url.startswith('/'):
  18. url = "/" + url
  19. f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID)
  20. # If registration is required for accessing this page, and the user isn't
  21. # logged in, redirect to the login page.
  22. if f.registration_required and request.user.is_anonymous():
  23. from django.contrib.auth.views import redirect_to_login
  24. return redirect_to_login(request.path)
  25. if f.template_name:
  26. t = loader.select_template((f.template_name, DEFAULT_TEMPLATE))
  27. else:
  28. t = loader.get_template(DEFAULT_TEMPLATE)
  29. c = RequestContext(request, {
  30. 'flatpage': f,
  31. })
  32. return HttpResponse(t.render(c))