Я застрял на этом пару часов; Я, вероятно, пропустил что-то простое, но я не уверен. Любая помощь приветствуется.Исключительное значение: 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)