Django测试客户端访问URL时获得301重定向

我正在为Django视图编写单元测试。我观察到我的一个视图返回了重定向代码301,这是不期望的。

这是我前面提到的views.py。

def index(request):

return render(request, 'index.html',

{'form': QueryForm()})

def query(request):

if request.is_ajax():

form = QueryForm(request.POST)

return HttpResponse('valid')

以下是urls.py。

urlpatterns = patterns('',

url(r'^$', 'core.views.index'),

url(r'^query/$', 'core.views.query')

)

而单元测试将失败。

def so_test(self):

response = self.client.post('/')

self.assertEquals(response.status_code, 200)

response = self.client.post('/query', {})

self.assertEquals(response.status_code, 200)

我的问题是:为什么返回状态301?

回答:

您已经定义了一个匹配的URL

/query/,但是您正在测试/query。Django正在使用尾部的斜杠重定向到url,因为APPEND_SLASH=True在您的设置中。

您可能希望将测试更改为:

response = self.client.post('/query/', {})

以上是 Django测试客户端访问URL时获得301重定向 的全部内容, 来源链接: utcz.com/qa/406223.html

回到顶部