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 from django.core.xheaders import populate_xheaders
7 from django.utils.safestring import mark_safe
8
9 DEFAULT_TEMPLATE = 'flatpages/default.html'
10
11 -def flatpage(request, url):
12 """
13 Flat page view.
14
15 Models: `flatpages.flatpages`
16 Templates: Uses the template defined by the ``template_name`` field,
17 or `flatpages/default.html` if template_name is not defined.
18 Context:
19 flatpage
20 `flatpages.flatpages` object
21 """
22 if not url.startswith('/'):
23 url = "/" + url
24 f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID)
25
26
27 if f.registration_required and not request.user.is_authenticated():
28 from django.contrib.auth.views import redirect_to_login
29 return redirect_to_login(request.path)
30 if f.template_name:
31 t = loader.select_template((f.template_name, DEFAULT_TEMPLATE))
32 else:
33 t = loader.get_template(DEFAULT_TEMPLATE)
34
35
36
37
38 f.title = mark_safe(f.title)
39 f.content = mark_safe(f.content)
40
41 c = RequestContext(request, {
42 'flatpage': f,
43 })
44 response = HttpResponse(t.render(c))
45 populate_xheaders(request, response, FlatPage, f.id)
46 return response
47