2017-04-09 62 views
0

以下是我的Django 1.10 views.py代碼,它生成我的博客RSS提要。我現在試圖將我的使用情況統計跟蹤添加到此。'NoneType'對象沒有屬性'META'

我將我所有的統計代碼保存在我的項目的指定區域。我所需要的是rss views.py中的這3行代碼。這在我的其他views.py,只是不在我目前吸引的rss之一。

from statistics.service.add import ServiceAdd as ServiceStatisticsAdd 
rss_reference = {'utc': timezone.now()} 
ServiceStatisticsAdd(request).add('rss', rss_reference, kwargs) 

我得到的錯誤是所有關於要求。本來數據庫def是def items(self):。當我去添加追蹤我預計包括請求將已修復錯誤。

這是我views.py

from datetime import datetime 

from django.contrib.syndication.views import Feed 
from django.urls import reverse 
from django.utils import timezone 

from database.ron_home.models import BlogWebsite 
from statistics.service.add import ServiceAdd as ServiceStatisticsAdd 


class BlogRssFeed(Feed): 
    title = "Rons-Home.net Blog RSS Feed" 
    link = "/en/blog/" 
    description = "Ron Piggott shares updates from his health care and logistics of daily living with a physical disability." 

    def item_title(self, obj): 
     return obj.entry_title 

    def item_description(self, obj): 
     return obj.entry 

    def item_link(self, obj): 
     return reverse('blog:entry', args=[obj.reference]) 

    def items(self, request, **kwargs): 
     rss_reference = {'utc': timezone.now()} 
     ServiceStatisticsAdd(request).add('rss', rss_reference, kwargs) 
     return BlogWebsite.objects.filter(entry_date__lt=datetime.utcnow()).order_by('-entry_date')[:15] 

這是完整的回溯

[09/Apr/2017 14:02:48] "GET/HTTP/1.1" 302 0 
/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py:1430: RuntimeWarning: DateTimeField BlogWebsite.entry_date received a naive datetime (2017-04-09 14:02:48) while time zone support is active. 
    RuntimeWarning) 
/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py:1430: RuntimeWarning: DateTimeField NewsletterEditions.issue_date received a naive datetime (2017-04-09 14:02:48) while time zone support is active. 
    RuntimeWarning) 
/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py:1430: RuntimeWarning: DateTimeField VideoProfile.date_created received a naive datetime (2017-04-09 14:02:48) while time zone support is active. 
    RuntimeWarning) 
[09/Apr/2017 14:02:48] "GET /en/ HTTP/1.1" 200 20414 
/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py:1430: RuntimeWarning: DateTimeField BlogWebsite.entry_date received a naive datetime (2017-04-09 14:02:51.335566) while time zone support is active. 
    RuntimeWarning) 
[09/Apr/2017 14:02:51] "GET /en/blog/ HTTP/1.1" 200 21780 
Internal Server Error: /en/rss/blog 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py", line 42, in inner 
    response = get_response(request) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/usr/local/lib/python3.5/dist-packages/django/contrib/syndication/views.py", line 41, in __call__ 
    feedgen = self.get_feed(obj, request) 
    File "/usr/local/lib/python3.5/dist-packages/django/contrib/syndication/views.py", line 169, in get_feed 
    for item in self._get_dynamic_attr('items', obj): 
    File "/usr/local/lib/python3.5/dist-packages/django/contrib/syndication/views.py", line 92, in _get_dynamic_attr 
    return attr(obj) 
    File "/home/rpiggott/PyCharmProjects/rons-home.net/rss/views.py", line 27, in items 
    ServiceStatisticsAdd(request).add('rss', rss_reference, kwargs) 
    File "/usr/lib/python3.5/contextlib.py", line 30, in inner 
    return func(*args, **kwds) 
    File "/home/rpiggott/PyCharmProjects/rons-home.net/statistics/service/add.py", line 25, in add 
    ip_address = get_real_ip(self.request) 
    File "/usr/local/lib/python3.5/dist-packages/ipware/ip.py", line 36, in get_real_ip 
    return get_ip(request, real_ip_only=True, right_most_proxy=right_most_proxy) 
    File "/usr/local/lib/python3.5/dist-packages/ipware/ip.py", line 14, in get_ip 
    value = request.META.get(key, request.META.get(key.replace('_', '-'), '')).strip() 
AttributeError: 'NoneType' object has no attribute 'META' 
[09/Apr/2017 14:02:54] "GET /en/rss/blog HTTP/1.1" 500 114831 
+0

哪裏是你的'ServiceStatisticsAdd'功能?你是否正確傳遞了請求? – Bobby

+0

@Bobby我從其他views.py複製了這3行代碼。他們是正確的。實際的ServiceStatisticsAdd位於'統計'子模塊中。 –

回答

1

我認爲這是一個有點棘手。這種方法添加到BlogRssFeed

def get_feed(self, obj, request): 
    self.custom_var = request 
    return super().get_feed(obj, request) 

然後

ServiceStatisticsAdd(self.custom_var).add('rss', rss_reference, kwargs) 
+0

更新了一些hackish的方式 – itzMEonTV

+0

感謝百萬。對此,我真的非常感激。 –

相關問題