app/django/views/generic/simple.py
author Sverre Rabbelier <srabbelier@gmail.com>
Mon, 06 Apr 2009 22:54:11 +0000
changeset 2102 5bc22dd22ecb
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
Fixed wrong usage of twoline_field in proposal view The proposal view currently uses twoline_field to show the abstract and contents of a proposal, which causes unbalanced tables and most data shoved to the far right of the screen. Patch by: "Matthew Wilkes" <matthew@matthewwilkes.co.uk> Reviewed by: Sverre Rabbelier

from django.template import loader, RequestContext
from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone

def direct_to_template(request, template, extra_context=None, mimetype=None, **kwargs):
    """
    Render a given template with any extra URL parameters in the context as
    ``{{ params }}``.
    """
    if extra_context is None: extra_context = {}
    dictionary = {'params': kwargs}
    for key, value in extra_context.items():
        if callable(value):
            dictionary[key] = value()
        else:
            dictionary[key] = value
    c = RequestContext(request, dictionary)
    t = loader.get_template(template)
    return HttpResponse(t.render(c), mimetype=mimetype)

def redirect_to(request, url, **kwargs):
    """
    Redirect to a given URL.

    The given url may contain dict-style string formatting, which will be
    interpolated against the params in the URL.  For example, to redirect from
    ``/foo/<id>/`` to ``/bar/<id>/``, you could use the following URLconf::

        urlpatterns = patterns('',
            ('^foo/(?P<id>\d+)/$', 'django.views.generic.simple.redirect_to', {'url' : '/bar/%(id)s/'}),
        )

    If the given url is ``None``, a HttpResponseGone (410) will be issued.
    """
    if url is not None:
        return HttpResponsePermanentRedirect(url % kwargs)
    else:
        return HttpResponseGone()