Added django.views.generic.simple.redirect_to view for issuing simple redirects. Also updated direct_to_template to use render_to_response to be consistant with coding style, and documented the simple generic views.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1249 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
dcb5bc32e0
commit
400cf5658d
|
@ -1,9 +1,28 @@
|
||||||
from django.core import template_loader
|
from django.core.extensions import DjangoContext, render_to_response
|
||||||
from django.core.extensions import DjangoContext
|
from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect, HttpResponseGone
|
||||||
from django.utils.httpwrappers import HttpResponse
|
|
||||||
|
|
||||||
def direct_to_template(request, template, **kwargs):
|
def direct_to_template(request, template, **kwargs):
|
||||||
"""Render a given template with any extra parameters in the context."""
|
"""
|
||||||
t = template_loader.get_template(template)
|
Render a given template with any extra URL parameters in the context as
|
||||||
c = DjangoContext(request, {'params' : kwargs})
|
``{{ params }}``.
|
||||||
return HttpResponse(t.render(c))
|
"""
|
||||||
|
return render_to_response(template, {'params' : kwargs}, context_instance=DjangoContext(request))
|
||||||
|
|
||||||
|
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 urlpattern::
|
||||||
|
|
||||||
|
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 HttpResponseRedirect(url % kwargs)
|
||||||
|
else:
|
||||||
|
return HttpResponseGone()
|
|
@ -57,8 +57,8 @@ arguments may either come from the URL pattern (as ``month``, ``day``,
|
||||||
``year``, etc. do above) or from the additional-information dictionary (as for
|
``year``, etc. do above) or from the additional-information dictionary (as for
|
||||||
``app_label``, ``module_name``, etc.).
|
``app_label``, ``module_name``, etc.).
|
||||||
|
|
||||||
All the generic views that follow require the ``app_label`` and ``module_name`` keys.
|
Most of the generic views that follow require the ``app_label`` and
|
||||||
These values are easiest to explain through example::
|
``module_name`` keys. These values are easiest to explain through example::
|
||||||
|
|
||||||
>>> from django.models.blog import entries
|
>>> from django.models.blog import entries
|
||||||
|
|
||||||
|
@ -68,6 +68,42 @@ holds all your model definitions) and ``entries`` is the ``module_name``
|
||||||
of the ``module_name`` option of your model). In the docs below, these keys
|
of the ``module_name`` option of your model). In the docs below, these keys
|
||||||
will not be repeated, but each generic view requires them.
|
will not be repeated, but each generic view requires them.
|
||||||
|
|
||||||
|
Using "simple" generic views
|
||||||
|
============================
|
||||||
|
|
||||||
|
The ``django.views.generic.simple`` module contains simple views to handle a
|
||||||
|
couple of common cases: rendering a template when no view logic is needed,
|
||||||
|
and issuing a redirect. These views are:
|
||||||
|
|
||||||
|
``direct_to_template``
|
||||||
|
Renders a given template using any extra parameters passed in the
|
||||||
|
urlpattern; requires the ``template`` argument.
|
||||||
|
|
||||||
|
For example, given the following URL patterns::
|
||||||
|
|
||||||
|
urlpatterns = patterns('django.views.generic.simple',
|
||||||
|
(r'^foo/$', 'direct_to_template', {'template' : 'foo_index'}),
|
||||||
|
(r'^foo/(?P<id>\d+)/$', 'direct_to_template', {'template' : 'foo_detail'}),
|
||||||
|
)
|
||||||
|
|
||||||
|
... a request to ``/foo/`` would cause the ``foo_index`` template to be
|
||||||
|
rendered, and a request to ``/foo/15/`` would cause the ``foo_detail``
|
||||||
|
template to be rendered with a context variable ``{{ params.id }}`` that is
|
||||||
|
set to ``15``.
|
||||||
|
|
||||||
|
``redirect_to``
|
||||||
|
Issue a 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 urlpattern::
|
||||||
|
|
||||||
|
urlpatterns = patterns('django.views.generic.simple',
|
||||||
|
('^foo/(?p<id>\d+)/$', 'redirect_to', {'url' : '/bar/%(id)s/'}),
|
||||||
|
)
|
||||||
|
|
||||||
|
If the given url is ``None``, a HttpResponseGone (410) will be issued.
|
||||||
|
|
||||||
Using date-based generic views
|
Using date-based generic views
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
|
@ -322,3 +358,4 @@ The create/update/delete views are:
|
||||||
|
|
||||||
object
|
object
|
||||||
The object about to be deleted
|
The object about to be deleted
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue