Я пытаюсь написать некоторые модульные тесты для некоторых представлений Django json_view, и у меня возникают проблемы с передачей json_string в представление.Вчера я опубликовал связанный вопрос о передаче строки json в представление Django из JS, проблема заключалась в том, что в моем JS я просто передавал строку json, где мне нужно было передать строку в качестве атрибута объекта, потому что яне удалось сделать это, строка была взята в качестве ключа для результирующего запроса dict.У меня снова похожая проблема, за исключением того, что на этот раз это от юнит-теста Django до Django View.Вот упрощенная версия моего кода, которая дает тот же результат.
class MyTestCase(TestCase):
def setUp(self):
self.u = User.objects.create_user('test','test','test')
self.u.is_active = True
self.u.save()
self.client.login(username='test',password='test')
def test_create_object_from_form(self):
"""Test the creation of the Instance from the form data."""
import json
json_string json.dumps({'resource':{'type':'book','author':'John Doe'}})
print(json_string)
response = self.client.post(reverse('ajax_view'),
{'form':json_string},'json')
self.assetNotContains(response,'error')
, и вид выглядит следующим образом
@json_view
def ajax_view(request):
"""Process the incoming form data."""
if request.method == 'POST':
print(request.POST)
form_data = json.loads(request.POST['form'])
resource_data = form_data['resource']
form = MyUserForm(resource_data)
if form.is_valid():
...
Вот что выдают два оператора печати, когда тест выполняетсязапустить.Json_string -
{"resource": {"type": "book", "author": "John Doe"}}
, и запрос выглядит следующим образом:
<QueryDict: {u'{\'form\': \'{"resource": {"type": "book", "author": "John Doe"}}\'}': [u'']}>
Я новичок в JS и ajax, так что не беспокойтесь о том, чтобы навредить моей гордости, ответвозможно, так близко, что это может вскочить и укусить меня.