2017-09-27 12 views
2

Djangoテストクライアントでフォームリクエストを送信するにはどうすればよいですか? 特に、私は(How should I write tests for Forms in Django?に触発さ)のようなものを持っているしたいと思います:DjangoテストクライアントがPOSTリクエストを使用してフォームを送信する

from django.tests import TestCase 

class MyTests(TestCase): 
    def test_forms(self): 
     response = self.client.post("/my/form/", {'something':'something'}) 

マイエンドポイント/私/フォームは、「何か」に対処するためのいくつかの内部のロジックを持っています。 問題は、後でrequest.POST.get( 'something')にアクセスしようとしたときに何も取得できなかったことです。 解決策が見つかりましたので、私は以下を共有しています。

答えて

2

キーは、content_typeをクライアントのpostメソッドに追加し、データをurlencodeすることでした。

from urllib import urlencode 

... 

data = urlencode({"something": "something"}) 
response = self.client.post("/my/form/", data, content_type="application/x-www-form-urlencoded") 

これは誰かを助けてくれるでしょうか。

+1

投稿データをurlencodeするか、コンテンツタイプを設定する必要はありません。 ['client.post()'](https://docs.djangoproject.com/en/1.11/topics/testing/tools/#django.test.Client.post)のドキュメントの例は、 'response =あなたの質問からself.client.post( "/ my/form /"、{'something': 'something'}) 'が動作するはずです。おそらくあなたはあなたの質問から何かを逃してしまったでしょうが、それはなぜそれが働いていなかったかを説明するでしょう。 – Alasdair

関連する問題