2017-04-09 21 views
0

以下は私のブログのRSSフィードを生成するDjango 1.10のviews.pyコードです。私は今これに私の使用統計情報追跡を追加しようとしています。'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項目(自己):でした。私が要求を含むと期待していたトラッキングを追加すると、エラーが修正されていました。

これは私の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私はこれらの3行のコードを他のviews.pyからコピーしました。彼らは正しいです。実際のServiceStatisticsAddは 'statistics'サブモジュールにあります。 –

答えて

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

ありがとう、百万。ほんとうにありがとう。 –

関連する問題