2017-10-10 86 views
1

我在下面的重定向函数有一个valueerror。我检查了以前的更新,它指定了当没有指定name参数时会发生这种情况。我已经做了,但由于某种奇怪的原因,它仍然没有工作。有一个ValueError的Django重定向

回溯低于 ValueError at/ 字典更新顺序元素#0的长度为0; 2需要

views.py

class HomeView(TemplateView): 
    template_name = "home.html" 
    title = 'Your Dashboard' 

    def get_context_data(self, *args, **kwargs): 
     if self.request.user.is_authenticated(): 
      fav_polls = PollFav.objects.filter(fav_user=self.request.user) 
      poll_types = [] 
      for poll in fav_polls: 
       poll_types.append(poll.poll.polltype_id) 
      poll_types = Ptype.objects.filter(pk__in=list(set(poll_types))) 

      context = super(HomeView, self).get_context_data(*args, **kwargs) 
      context["submit_btn_value"] = "Send" 
      context["title"] = self.title 
      context["poll_types"] = poll_types 
      todate = datetime.datetime.now().date() 

      user = self.request.user 

      context["pollsCreated"] = Ptype.objects.filter(c_user=user).count() 
      context["pollsECreated"] = PollItem.objects.filter(user_submit=user).count() 

      try: 
       context["user"] = PUser.objects.get(user_id=self.request.user.id) 
      except: 
       #where the issue is 
       return redirect("PUserCreate") 

      return context 

urls.py

url(r'^puser/add/$', PUserCreate.as_view(), name='PUserCreate'), 
+3

你为什么从'get_context_data'返回'redirect'? –

+0

@Sachin Kukreja - 我试图重定向到另一个网址,如果没有检测到创建的用户。 – user3655574

+0

@Moses Koledoye - 它不适用于我所有其他指定网址。 – user3655574

回答

0

感谢您的提示。

而不是在get_context_data方法中进行重定向,重定向需要从get方法(下面)完成。

“你已经重写的值返回到父类的方法获取方法,其中它试图更新上下文字典,此方法将返回值” - 萨钦Kukreja

def get(self, request, *args, **kwargs): 
    context = self.get_context_data(**kwargs) 

    try: 
     print PUser.objects.get(user_id=self.request.user.id) 
    except: 
     return redirect('PUserCreate') 

    return self.render_to_response(context)