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

Bạn có thể giải thích cho tôi "ma thuật này không?" Làm thế nào là a được chuyển đổi từ list thành string?Nội dung phản hồi REST "kỳ diệu" được chuyển đổi từ 'danh sách' thành 'chuỗi'

response là phiên bản rest_framework.response.Response.

+2

'some_object.some_variable' phải làm gì với' some_variable'? Bạn có thể giải thích điều này tốt hơn một chút không? – mgilson

+0

hàm 'type()' trả về một chuỗi, không có gì được chuyển đổi. –

+1

Phép thuật nào khiến 'some_object' xuất hiện không được phép? –

Trả lời

8

Chỉ có một vài cách mà bạn có thể có một cái gì đó như thế này xảy ra. Lý do phổ biến nhất là nếu response.content được triển khai như một số loại mô tả, những điều thú vị như thế này có thể xảy ra. (Bộ mô tả điển hình hoạt động như thế này sẽ là đối tượng property). Trong trường hợp này, getter của tài sản sẽ trả về một chuỗi. Như một ví dụ chính thức:

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 - Vâng, tôi cho rằng câu trả lời là xong. :) – mgilson

Các vấn đề liên quan