我想为某些Django json_view视图编写一些单元测试,并且无法将json_string传递给视图。我昨天发布了一个相关的问题,关于从JS传递json字符串到Django视图,问题是在我的JS中,我只是传递json字符串,我需要传递字符串作为对象的属性,因为我没有做到这一点,字符串被视为结果查询字典的关键。我又遇到了类似的问题,只不过这次它是对Django View进行Django单元测试。这里是我的代码的简化版本,它产生相同的结果。单元测试Django JSON查看
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总新手,所以不用担心伤害了我的自尊,答案很可能是在附近,所以可以跳起来咬我。
即使添加头“XMLHttpRequest”,我仍然在查询字典的关键位置获得JSON字符串。 – snarkyname77 2011-01-25 15:04:47
删除您如何使用client.post的第二个示例,并将其标记为答案,第二个示例包含我创建要解析的帖子的问题。 – snarkyname77 2011-01-28 17:40:21