2014-11-27 3 views
0

Я застрял на этом пару часов; Я, вероятно, пропустил что-то простое, но я не уверен. Любая помощь приветствуется.Исключительное значение: Django Class-Based View не имеет атрибута 'campaignId'

Недавно я изменил базу данных для нашего проекта Django от MongoDB до Neo4J. В процессе миграции, я изменяя некоторые из взглядов, URL и т.д.

обратного прослеживания Я вижу:

Exception Value: 'TweetListView' object has no attribute 'campaignId' 

Вот полная отслеживающий и соответствующий код: https://gist.github.com/joefusaro/820270c1ff0999d3d3fd

из campaign_list.html

<a href="{% url 'campaigns:tweets:tweet_list' campaignId=campaign.campaignId %}" type="button" class="btn btn-default"></a> 

кампании/urls.py

from django.conf.urls import patterns, url, include 

urlpatterns = patterns(
    '', 

    url(
     r'^(?P<campaignId>\d+?)/tweets/', 
     include('providers.twitter.urls', namespace='tweets') 
    ), 

твиттер/urls.py

from django.conf.urls import patterns, url 

from .views import TweetListView 


urlpatterns = patterns(
    '', 
    url(
     r'^list/$', 
     TweetListView.as_view(), 
     name='tweet_list' 
    ), 

твиттер/views.py

class TweetListView(LoginRequiredMixin, TemplateView): # CampaignOwnerPermission, 
    '''Displays TwitterPosts relevant to a Campaign; The campaignId variable 
    is passed to get_object request method from the campaign_list page.''' 

    template_name = 'twitter/stream.html' 
    paginate_by = settings.PAGINATE_BY_VIEWS 
    context_object_name = 'tweets' 
    page_kwarg = 'page' 
    object = None 

    def get_object(self): 
     if self.object is None: 
      # Return all TwitterPosts for Campaign designated by campaignId 
      self.object = GetTwitterPostsForCampaign(self.campaignId) 

     return self.object 

    def paginate_queryset(self, object, store, page_size): 
     paginator = TweetPaginator(
      object, store, page_size 
     ) 

     page = self.request.GET.get(self.page_kwarg) or 1 

     try: 
      page_number = int(page) 
     except ValueError: 
      if page == 'last': 
       page_number = paginator.num_pages 
      elif page == 'first': 
       page_number = 1 
      else: 
       raise Http404(_('Page is not found.')) 
     try: 
      page = paginator.page(page_number) 
      return (paginator, page, page.object_list, page.has_other_pages()) 
     except InvalidPage as e: 
      raise Http404(
       _('Invalid page (%(page_number)s): %(message)s') % { 
        'page_number': page_number, 
        'message': str(e) 
       } 
      ) 

    def get_context_data(self, **kwargs): 
     object = self.get_object() 
     page_size = self.paginate_by 
     context_object_name = self.context_object_name 

     if page_size: 
      paginator, page, queryset, is_paginated = self.paginate_queryset(
       object, self.kwargs['store'], page_size 
      ) 
      context = { 
       'paginator': paginator, 
       'page_obj': page, 
       'is_paginated': is_paginated, 
       'object_list': queryset 
      } 
     else: 
      raise InvalidPage 

     if context_object_name is not None: 
      context[context_object_name] = queryset 

     context.update(kwargs) 

     context['campaign'] = self.campaign 

     return super(TweetStoreListView, self).get_context_data(**context) 

ответ

0

Было бы проще, если бы вы выложили полный отслеживающий, который точно показал бы, где произошла ошибка.

Тем не менее, это, вероятно, происходит в get_object методе ваш взгляд, в третьей строке, которая должна быть:

self.object = GetTwitterPostsForCampaign(self.kwargs['campaignId']) 
Смежные вопросы