ajax - Django测试客户端访问url时得到301重定向

标签 ajax django post django-testing

我正在为 django View 编写单元测试。我观察到我的一个 View 返回重定向代码 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?

最佳答案

您已经定义了一个与 /query/ 匹配的 URL,但您正在测试 /query。 Django 正在重定向到带有尾部斜杠的 url,因为 APPEND_SLASH=True在您的设置中。

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

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

关于ajax - Django测试客户端访问url时得到301重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784905/

相关文章:

python - Django 查询 : How to use sql "union" and "not in" function

python - 在 python/django 应用程序中查找阻塞函数

ios - HTTP Post - 超时 - 在超时间隔内发起多个请求

PHP-HTML5-Form - 我的查询生成的下拉列表发布了一个空白值

javascript - 如何压缩 ajax 请求的响应?

django - 将 Django base.html 模板分为 header、content 和 footer.html

jquery - 浏览器可以处理的json对象的大小有限制吗?

ajax - 我可以使用 Firebug 在新选项卡中打开 AJAX 响应吗

php - 如何将下拉列表中的值插入到 mysql 查询中以从数据库中检索数据

javascript - 如何使用 JavaScript 检测 AJAX 调用?