> > 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. -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/09es83Iga-4J. 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.