2015-02-03 2 views
-1

Я пытаюсь проверить вызов вызова POST. Я использую follow = True. Но тестовый клиент использует метод GET, и мои данные POST не передаются.клиент-консультант django не вызывает POST, но GET

вот мое мнение:

def aaa(request): 
    n = request.method 
    d = request.POST 
    template = 'shop/test.html' 
    return render(request, template, d) 

Вот мой тест:

from django.utils import unittest 
from django.test.client import Client 

def test_add_to_cart_page(self): 
    response = self.client.post('/aaa/', {'product': 11}, follow=True) 
    self.assertEqual(response.status_code, 200) 

Когда вид называется. Это не POST, но GET используется, и мои POST-параметры пусты, конечно. Может ли кто-нибудь сказать, почему это произошло?

EDIT: Я сделал чистую вену со свежим Django. И он работает как ожидалось (звонки POST) Похоже, что в Дании что-то гнилое.

+3

Похоже, вы используете его правильно. Просто, чтобы быть уверенным ... вы * предполагаете *, что это запрос GET, потому что вы не видите d-рендеринг в своем шаблоне? Или вы действительно проверили request.method? – dylrei

+0

yes Я проверяю request.method –

ответ

1
follow=True 

означает, что клиент следует перенаправлению.

response = self.client.post('/aaa/', {'product': 11}, follow=True) 

означает, что ответ содержит следующее сообщение об ответе. В вашем тесте нет ничего плохого; он должен делать POST.


Что странно в том, что ваш взгляд не перенаправляется ни на что, поэтому я не понимаю, почему вы используете follow = True. Также я не понимаю, почему вы предполагаете, что сообщение не работает. Каков результат вашего теста?

+0

Это упрощенный пример –

+1

@JoeBobson Трудно узнать, как помочь, если мы не сможем увидеть код, который вы используете. Есть пара очевидных вещей, неверных с приведенным примером кода, но затем вы говорите, что вы проверили проблему, даже если вы не показываете ничего, что бы выглядело так, как будто у вас есть. На данный момент достаточно ясно, что вы допустили ошибку, но поскольку вы не используете фактический код, вам сложно найти вашу ошибку. – dylrei

0

После расследования я понимаю, что использование PREPEND_WWW прерывает тестовые клиентские запросы.

Смежные вопросы