On 2013-05-16, at 22:41 , Larry Martell wrote:

> On Thu, May 16, 2013 at 2:37 PM, Masklinn <[email protected]> wrote:
>> 
>> On 2013-05-16, at 22:22 , Larry Martell wrote:
>> 
>>> On Sat, May 11, 2013 at 8:23 AM, Masklinn <[email protected]> wrote:
>>>> On 2013-05-11, at 15:57 , Larry Martell wrote:
>>>>> 
>>>>> Yes, that is what I did. This is not in my urlconf. It's in a view
>>>>> function. I replaced:
>>>>> 
>>>>> return direct_to_template(request, template)
>>>>> 
>>>>> by:
>>>>> 
>>>>> return TemplateView.as_view(template_name=template)
>>>>> 
>>>>> Is that not correct?
>>>> 
>>>> Indeed not, `TemplateView.as_view(template)` is roughly equivalent to
>>>> `functools.partial(direct_to_template, template=template)`: it's only
>>>> one half of the operation, which returns a callable replying to
>>>> requests.
>>>> 
>>>> You need something along the lines of 
>>>> `TemplateView.as_view(template)(request)`
>>> 
>>> I am running into this same problem with RedirectView. In 1.4 I had a
>>> view that was doing:
>>> 
>>> return redirect_to(request, new_report.url)
>>> 
>>> I changed it to:
>>> 
>>> return RedirectView.as_view(url=new_report.url)
>>> 
>>> and it's blowing up with:
>>> 
>>> Traceback:
>>> File "/Library/Python/2.7/site-packages/django/core/handlers/base.py"
>>> in get_response
>>> 187.                 response = middleware_method(request, response)
>>> File 
>>> "/Library/Python/2.7/site-packages/django/contrib/sessions/middleware.py"
>>> in process_response
>>> 26.                 patch_vary_headers(response, ('Cookie',))
>>> File "/Library/Python/2.7/site-packages/django/utils/cache.py" in
>>> patch_vary_headers
>>> 142.     if response.has_header('Vary'):
>>> 
>>> I tried doing something similar to what you suggested with
>>> TemplateView, but that didn't work:
>>> 
>>> RedirectView.as_view(url=new_report.url)(request)
>>> *** TypeError: a float is required
>> 
>> Do you have a full traceback?
> 
> That is the full traceback I get the browser.
> 
>> Does `new_report.url` contain format metacharacters such as %f?
> 
> Yes:
> 
> (Pdb) print new_report.url
> /report/CDSEM/MeasurementData/?date_time=3%2F4%2F10&submit_preview=Generate+Report&group=&target_name=&tool_ids=15&recipe=&ep=&roi_name=&lot=&field_6=Date+Time&field_7=Bottom&field_4=Ep&field_5=Lot&field_2=Target&field_3=Recipe&field_1=Tool

Looks like you probably need to escape (double) the % signs:
https://docs.djangoproject.com/en/1.5/ref/class-based-views/base/#django.views.generic.base.RedirectView

> The given URL may contain dictionary-style string formatting, which
> will be interpolated against the parameters captured in the URL. Because
> keyword interpolation is always done (even if no arguments are passed
> in), any "%" characters in the URL must be written as "%%" so that
> Python will convert them to a single percent sign on output.

But really, while I might somewhat see the point of using
TemplateView[0] I don't see the point of using RedirectView in that
manner, why not just return an HttpResponseRedirect[3]?

Class-based views are really for using in URL mappings (potentially
custom subclasses), not for using in your own view functions.

[0] Still, it would probably be simpler to use TemplateResponse[1]
    directly, or render_to render_to_response[2] if it's sufficient
[1] 
https://docs.djangoproject.com/en/dev/ref/template-response/#templateresponse-objects
[2] 
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response
[3] 
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseRedirect

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to