我正在为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在您的设置中。
/query/
/query
APPEND_SLASH=True
您可能希望将测试更改为:
response = self.client.post('/query/', {})