So as long as I don't use the `params` thing (which I don't) there will be no problem with my views? Reading this and the other commit done at the same time, looks like the function calls behave the way I expect :)
Bernardo Em domingo, 19 de agosto de 2012 06h44min03s UTC-3, Marc Tamlyn escreveu: > > Hi Bernado, > > Template view passing params into the context rather than just passing the > kwargs from the urlconf directly is actally somewhat older, and is kept as > legacy from django.views.generic.simple.direct_to_template. The changes you > refer to do actually introduce a subtle backwards incompatibility with > TemplateView - but yesterday we made a new commit[1], fixing the *real* > problem, which is that the params variable was inconsistent with how the > rest of the CBVs worked. This actually introduces a slightly different > backwards incompatibility, which is that the params variable no longer > exists. This has been documented in the release notes. > > There is perhaps a case for removing this passing of urlconf kwargs to the > context all together, as it seems a little odd to me and only applies to > TemplateView, but for the moment it's at least been made a bit more > consistent with how other CBVs work. > > Marc > > [1] > https://github.com/django/django/commit/f04bb6d798b07aa5e7c1d99d700fa6ddc7d39e62 > > On Saturday, 18 August 2012 08:21:28 UTC+1, Bernardo wrote: >> >> Hi, I was trying my project on django 1.5 alpha and a change on >> TemplateViews made some code break. >> The `get` method changed how `get_context_data` is called from (**kwargs)to >> (params=kwargs). Link: >> https://github.com/django/django/blob/master/django/views/generic/base.py >> >> I traced the change and found a ticket saying the TemplateView could not >> be used with FormView because the get_context_data is in a different >> layout. Ticket: https://code.djangoproject.com/ticket/16074 >> >> I don't know how popular are classed based views among other django >> developers, but I only use them. So, this change could be added in the >> release notes to warn people about breaking some code. >> For me, I had the habit of writing: >> >> With e.g. this url: url(r'^ref/(?P<id>\d+?)/?$', >> views.ref.Show.as_view()) >> >> def get_context_data(self, id, **kw): >> pass #do something with id >> >> Now, the only way I find to keep the code compatible with both 1.4 and >> 1.5 is doing: >> >> def get_context_data(self, **kw): >> id = kw.get('params', kw)['id'] >> >> which is just a little bit more code but could crash in django 1.4 if >> somehow there's a "params" argument >> >> Could this be avoided? >> >> Thanks, >> Bernardo >> > -- You received this message because you are subscribed to the Google Groups "Django developers" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-developers/-/uA4mKpt0NZ0J. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.
