2017-10-10 35 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)