2011-09-02 76 views
1

我已經使用了inlineformset,視圖方法如下:GET表單集返回302,而不是200(django的)

@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「後」的方法。這是代碼。

def test_patron_phone_edit(self): 
     self.client.login(username='[email protected]', 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='[email protected]') 
    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='[email protected]', password='alex') 

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

     self.assertEquals(response.status_code, 200) 

但是,這是行不通的。而不是得到一個status_code = 200,我得到一個status_code = 302。爲什麼?也許我需要指定GET方法的總表單?

任何幫助,高度讚賞!謝謝!

如果需要更多信息,請留下評論,然後粘貼所需信息。

回答

3

您在登錄功能中有錯字。用戶名應該是用戶名。你會得到一個302重定向,將你發送到登錄頁面。

+0

Thanks.I已經解決了這個問題,你說的是對的。 – Mathieu