2011-09-02 66 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

相关问题