2013-04-29 6 views
6
>>> print type(a) 
<type 'list'> 
>>> response.content = a 
>>> print type(response.content) 
<type 'str'> 

Czy mógłbyś wyjaśnić mi tę "magię"? Jak przekonwertować a z list na string?W jaki sposób treść odpowiedzi REST jest "magicznie" przekształcana z "listy" na "ciąg"

response jest instancją rest_framework.response.Response.

+2

Co "some_object.some_variable' ma coś wspólnego z' some_variable'? Czy możesz wyjaśnić to trochę lepiej? – mgilson

+0

funkcja 'type()' zwraca ciąg, nic nie jest konwertowane. –

+1

Która magia spowodowała pojawienie się 'some_object'? –

Odpowiedz

8

Istnieje tylko kilka sposobów na to, aby coś takiego się stało. Najczęstszym powodem jest to, że jeśli response.content jest zaimplementowany jako deskryptor, może się zdarzyć coś interesującego. (Typowym deskryptorem, który działałby w ten sposób, byłby obiekt property). W takim przypadku getter właściwości zwróci ciąg znaków. Jako formalny przykład:

class Foo(self): 
    def __init__(self): 
     self._x = 1 

    @property 
    def attribute_like(self): 
     return str(self._x) 

    @attribute_like.setter 
    def attribute_like(self,value): 
     self._x = value 

f = Foo() 
f.attribute_like = [1,2,3] 
print type(f.attribute_like) 
+4

https://github.com/django/django/blob/master/django/http/response.py#L282 – dm03514

+1

@ dm03514 - Cóż, przypuszczam, że to odpowiada. :) – mgilson

Powiązane problemy