私はこのような一般的な見方をしています:
class SaveView(CreateView):
def get_initial(self):
# Get the initial dictionary from the superclass method
initial = super(SaveView, self).get_initial()
# Copy the dictionary so we don't accidentally change a mutable dict
initial = initial.copy()
initial['user'] = self.request.user
return initial
このビューにはlogin_required
デコレータがあるため、self.request.user
常に有効です。
ブラウザでページにアクセスしているときは、すべて正常に機能していますが、テストは失敗しています。次のテスト設定があります。
from django.test import TestCase, client
class MyTest(TestCase):
def setUp(self):
self.client = client.Client()
def test1(self):
self.assertTrue(self.client.login(username='user1',password='password1'))
data = {'name':'test 1'}
response = self.client.post('/app/save/', data)
self.assertEqual(response.status_code, 302)
'/ app / save /'はそのビューを呼び出すURLです(ブラウザでは完全に機能しています。私のモデルには2つの必須フィールド"name"と"user"があるため、作成されたオブジェクトページへのリダイレクトが発行されます。データを介して名前を渡し、ユーザーはget_initialメソッドから取得する必要があります。
確かに、これは「実際の生活」、つまりブラウザで起こることです。
このテストに合格させる唯一の方法は、データディクショナリの「ユーザー」に合格することです。
これはdjango.testモジュールのバグですか、それとも予想される動作であり、その理由は何ですか?
前もって感謝します