如何在Django测试客户端中创建补丁/更新(即更新对象)请求?

时间:2015-08-04 14:16:45

标签: django tastypie django-testing

我正在使用Django 1.5。和django-tastypie

我正在测试一个用例,首先我必须创建一个对象,然后通过rest api更新该对象。 例如

class FooTest(TestCase):
    fixtures = ['df_fixtures1.json']

    def setUp(self):
        print "SETTING UP?"
    def tearDown(self):
        print "Tear Down"
    def test_foo_delete(self):
          member1 = Client()
          member1.login(username='member1',password=test_password)
          response = member1.post('/fooapi/api/foo/?format=json', json_data, content_type="application/json") #**This creates the foo object**
          META =  {'X-HTTP-Method-Override':'PATCH'}
          response123 = member1.put(response['location'],
                        '{"isActive":0}', 
                       content_type="application/json", META = META    
                       ) **#This gives a 501**

第二个请求给出501错误。在服务器端,存在def obj_update,即处理更新/补丁请求的方法。 使用Django客户端为rest api更新对象的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

从django 1.6开始可以使用“PATCH”方法,这可以用作Django 1.5的黑客

response123 = member1.put(response['location'],
                        data = data, 
                        content_type="application/json",
                        **{'REQUEST_METHOD':'PATCH'}
                       )

这会将方法从put更改为PATCH。希望这有助于其他人。