2012-10-08 28 views
5

我正在爲django視圖編寫單元測試。我觀察到我的一個視圖返回重定向代碼301,這是不期望的。
這是我前面提到的views.py。Django測試客戶端在訪問url時獲得301重定向

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返回?

+0

哪一個返回301?那是完整的代碼嗎? –

+0

@DanielRoseman第二個,對不起,它不明確。 –

回答

25

您已經定義了一個與/query/匹配的網址,但您正在測試/query。 Django正在重定向到帶有斜槓的網址,因爲在您的設置中使用了APPEND_SLASH=True

你可能想測試更改爲:

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

是的,這解釋了很多!謝謝:)它現在可以工作。 –