2012-10-08 19 views
5

Tôi đang viết unittests cho chế độ xem django. Tôi đã quan sát thấy rằng một trong những quan điểm của tôi trả về mã chuyển hướng 301, điều này không được mong đợi.
Đây là view.py đã đề cập ở trên.Máy khách thử nghiệm Django được chuyển hướng 301 khi truy cập url

def index(request): 
    return render(request, 'index.html', 
        {'form': QueryForm()}) 

def query(request): 
    if request.is_ajax(): 
     form = QueryForm(request.POST) 
     return HttpResponse('valid') 

Dưới đây là urls.py.

urlpatterns = patterns('', 
     url(r'^$', 'core.views.index'), 
     url(r'^query/$', 'core.views.query') 
     ) 

Và không thể thực hiện được sẽ không thành công.

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) 

Câu hỏi của tôi là: tại sao trạng thái 301 trả về?

+0

Cái nào đang trở lại 301? Đó có phải là mã đầy đủ không? –

+0

@DanielRoseman Thứ hai, xin lỗi vì nó không rõ ràng. –

Trả lời

25

Bạn đã xác định url khớp với /query/, nhưng bạn đang thử nghiệm /query. Django đang chuyển hướng đến url có dấu gạch chéo vì APPEND_SLASH=True trong cài đặt của bạn.

Bạn có thể muốn thay đổi thử nghiệm của bạn:

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

Có, điều này giải thích rất nhiều! Cảm ơn :) Nó hoạt động ngay bây giờ. –

Các vấn đề liên quan