>
> 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.

Reply via email to