2017-10-10 10 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 - 作成されたユーザーが検出されない場合、別のURLにリダイレクトしようとしています。 – user3655574

+0

@Moses Koledoye - 他のすべての名前付きURLにはうまくいきません。 – 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) 
関連する問題