【发布时间】:2016-12-05 21:24:28
【问题描述】:
request.data.get('answers_ids') 从 APIClient 数据发送时返回 str '2' 而不是 array ['1', '2']。但是当我从 rest framework web-gui 发送数据时,一切正常。
使用:
- django == 1.10.4
- djangorestframework == 3.5.3
tests.py:
class ApiCompletePoll(APITestCase):
def setUp(self):
self.user = User.objects.create(
username='123',
password='123',
email='123@123.ru'
)
self.client = APIClient()
self.client.credentials(
HTTP_AUTHORIZATION='Token ' + self.user.auth_token.key
)
def test_complete_poll(self):
data = {'poll_id': 1, 'answers_ids': [1, 2]} # SENT DATA
self.client.post(reverse('complete-poll'), data)
self.assertTrue(
CompletedPoll.objects.filter(
user=self.user, poll__id=data['poll_id']
)
)
views.py:
@api_view(http_method_names=['post', ])
def update_or_create_user_answers(request):
user = request.user
poll_id = request.data.get('poll_id', 0)
answers_ids = request.data.get('answers_ids', [])
print(list(request.data.items()), request.data, answers_ids) # GETTING DATA
输出:
[('answers_ids', '2'), ('poll_id', '1')]
<QueryDict: {'answers_ids': ['1', '2'], 'poll_id': ['1']}>
2
【问题讨论】:
标签: django python-3.x django-rest-framework