You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.4 KiB
37 lines
1.4 KiB
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()
|
|
|