El 17/05/12 04:51, Jon Paugh escribió:
That last part refers to the way /Python/ handles arguments and the like. Whenever you have a complex object, such as an array, Python does not make a new copy of the object each time the view function is called. Instead, it passes a reference to the object, which means that if you change that object inside the view, it changes the original, which is shared across multiple calls to the same function.

If you don't modify the object, then all is well.

On Wednesday, May 16, 2012 7:18:49 PM UTC-4, Chris B wrote:

    According to the docs on the generic class based views
    <https://docs.djangoproject.com/en/1.4/ref/class-based-views/#view>:

        Each request served by a View
        
<https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View>
 has
        an independent state; therefore, it is safe to store state
        variables on the instance (i.e., self.foo = 3 is a thread-safe
        operation).

    and

        Any argument passed into as_view() will be assigned onto the
instance that is used to service a request.
    but then right after that, it says:

        Arguments passed to a view are shared between every instance
        of a view. This means that you shoudn't use a list,
        dictionary, or any other variable object as an argument to a
        view. If you did, the actions of one user visiting your view
        could have an effect on subsequent users visiting the same view.


    I'm confused then.  Under what conditions do arguments passed to
    ClassView.as_view() become bound to that instance vs when do tehy
    get bound to the class as a whole (between requests)?

--
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/-/Fr2hbFuJOwoJ.
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.
I think is not an issue about thread safety and where docs says 'variable object' it really means mutable objects, thus any change on the object will affect any variable referencing it. Simple Python example:

def test(x, y=[]):
    y.append(x)
    print y

>>> test(3)
[3]
>>> test(4)
[3,4]

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