I saw this in one of the previous Python newsletters (I think) and it
looked pretty interesting: https://github.com/gregmuellegger/django-mobile

On Thu, Aug 9, 2012 at 9:29 AM, Thomas Weholt <thomas.weh...@gmail.com>wrote:

> Hmmm ... is there any other way to achieve the same result ( using a
> special template for mobile devices ) without hacking this into each
> view? MiddleWare using
>
>
> https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs/#process-template-response
>
> for instance?
>
> Anyway, thanks for your input.
>
> Thomas
>
> On Thu, Aug 9, 2012 at 3:09 PM, Daniel Roseman <dan...@roseman.org.uk>
> wrote:
> >> On Thursday, 9 August 2012 13:18:36 UTC+1, MrMuffin wrote:
> >>>
> >>> I need to change what template to use in a response based on type of
> >>> user-agent in request. The middleware below works ok to detect mobile
> >>> client, but I cannot get the template manipulation in the process_view
> >>> method  to work.
> >>>
> >>> The middleware:
> >>>
> >>> # Credits: http://djangosnippets.org/snippets/2001/
> >>> import re
> >>>
> >>>
> >>> class MobileDetectionMiddleware(object):
> >>>     """
> >>>     Useful middleware to detect if the user is
> >>>     on a mobile device.
> >>>     """
> >>>
> >>>     def process_view(self, request, view_func, view_args, view_kwargs):
> >>>         if not request.is_mobile:
> >>>             return
> >>>
> >>>         print vars(view_func), view_args,view_kwargs # these are
> >>> allways blank/empty
> >>>         template = view_kwargs.get("template")
> >>>         if template is None and view_func.func_defaults:
> >>>             for default in view_func.func_defaults:
> >>>                 if str(default).endswith(".html"):
> >>>                     template = default
> >>>                     break
> >>>
> >>>         if template is not None:
> >>>             template = template.rsplit(".html", 1)[0] + ".mobile.html"
> >>>             try:
> >>>                 get_template(template)
> >>>             except TemplateDoesNotExist:
> >>>                 return
> >>>             else:
> >>>                 view_kwargs["template"] = template
> >>>
> >>>         return view_func(request, *view_args, **view_kwargs)
> >>>
> >>> <snip>
> >>>
> >>>
> >>> from django.shortcuts import *
> >>>
> >>> def index(request):
> >>>     return render_to_response('testapp/test.html',
> {'user':request.user})
> >>>
> >>>
> >>>
> >>> Any clues?
> >>>
> >>>
> >>> --
> >>> Mvh/Best regards,
> >>> Thomas Weholt
> >>> http://www.weholt.org
> >>
> >>
> >
> > I can't imagine how you are expecting this to work. The template in your
> > view is not a parameter, but is hard-coded into the call to
> > render_to_response. Your code appears to be wanting to access the default
> > value of a non-existent view parameter, modify it, and pass it back into
> a
> > view that isn't expecting it.
> >
> > It seems like you want to make `template` a parameter to the view, and
> then
> > your middleware could modify that.
> > --
> > DR.
>
>
>
> --
> Mvh/Best regards,
> Thomas Weholt
> http://www.weholt.org
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to