1

私は inlineformset を使用しました。views メソッドは次のとおりです。

@login_required
def patron_edit_phone(request, *args, **kwargs):
    patron = request.user
    PhoneNumberFormSet = inlineformset_factory(Patron, PhoneNumber, extra=1, exclude="kind",can_order=True)
    if request.method == "POST":
        formset = PhoneNumberFormSet(request.POST, request.FILES, instance=patron)
        if formset.is_valid(): 
            formset.save()
            messages.success(request, _(u"Votre information de numéro de téléphone a bien été mise à jour"))
    else:
        formset = PhoneNumberFormSet(instance=patron)

    return direct_to_template(request, 'accounts/patron_phone_edit.html', extra_context={'formset': formset, 'patron': patron })

inlineformset の "post" メソッドのテストに成功しました。これがコードです。

def test_patron_phone_edit(self):
        self.client.login(username='alex.wg@e.com', password='alex')
        response = self.client.post(reverse('patron_edit_phone'), {
            'phones-TOTAL_FORMS': u'1',
            'phones-INITIAL_FORMS': u'',
            'phones-MAX_NUM_FORMS': u'',

            'phones-0-id' : '1',
            'phones-0-patron' : '1',
            'phones-0-number' : "11111111", 
            'phones-0-DELETE' : u''
    })
    self.assertEquals(response.status_code, 200)
    patron = Patron.objects.get(email='alex.wg@e.com')
    for phone in patron.phones.all():
        if phone.id == 1:
            self.assertEquals(phone.number, "11111111")
        else:
            pass  

get メソッドで次のことを試しました。

def test_patron_phone_get_form(self):
        self.client.login(usernamer='alex.wg@e.com', password='alex')

        response = self.client.get(reverse('patron_edit_phone'))

        self.assertEquals(response.status_code, 200)

しかし、これはうまくいきません。status_code=200 を取得する代わりに、status_code=302 を取得します。なんで?おそらく、GET メソッドの合計フォームを指定する必要がありますか?

どんな助けでも大歓迎です!ありがとう!

さらに情報が必要な場合は、コメントを残してください。必要な情報を貼り付けます。

4

1 に答える 1

3

ログイン機能にタイプミスがあります。usernamerはusernameである必要があります。ログインページに移動する302リダイレクトを取得しています。

于 2011-09-13T03:57:54.380 に答える