django测试客户端获得404,但浏览器工作

时间:2015-04-03 02:07:09

标签: django testing django-testing django-tests

我可以通过网络浏览器(http://127.0.0.1:8983/solr)访问本地地址,以查看Solr管理员(搜索网络应用)。

但是,通过Django(1.7)测试客户端,我得到了:

>>> from django.test import Client  
>>> c = Client()  
>>> response = c.get('http://127.0.0.1:8983/solr')  
>>> response.status_code  
404

为什么Django不能连接到与浏览器相同的地址?

2 个答案:

答案 0 :(得分:4)

您应该向get()提供相对网址

c.get("/solr/") 

这在Testing Tools页面记录:

  

检索网页时,请记住指定网址的路径,而不是   整个域。例如,这是正确的:

c.get('/login/') 
     

这是不正确的:

c.get('http://www.example.com/login/')

答案 1 :(得分:1)

添加@ alecxe' s answer您应该指定相对网址;使用reverse()获取网址的最佳做法是:

from django.core.urlresolvers import reverse
from django.test import Client  
c = Client()

# assuming you've named the route 'solar'   
url = reverse('solar')
c.get(url)