سؤال

وتابعت على طول <وأ href = "http://docs.djangoproject.com/en/dev/ref/contrib/syndication/#publishing-atom-and-rss-feeds-in-tandem" يختلط = "نوفولو noreferrer "> هذا البرنامج التعليمي للحصول على RSS جانغو وATOM يغذي وحصلت على عمل.

ولكن الخادم تطوير اختبار يحتفظ جعل المتصفح تحميل يغذي كملف بدلا من متصفح كشف أنها وثيقة أكس.

وتجربتي مع HTTP يقول لي أن هناك في عداد المفقودين نوع التمثيل الصامت في رأس نوع المحتوى.

وكيف يمكنني تحديد ذلك في جانغو؟

هل كانت مفيدة؟

المحلول 4

وأعتقد أن المشكلة مع متصفح كامينو على OS X، وليس مع رأس HTTP ونوع التمثيل الصامت.

وعندما حاولت على سفاري، عملت.

نصائح أخرى

وهناك تعليق في التعليمات البرمجية المصدر Everyblock حول هذا الموضوع.

وأنها تحدد فئة الذي يحل محل نوع التمثيل الصامت من جانغو القياسية تغذية مثل ذلك:

# RSS feeds powered by Django's syndication framework use MIME type
# 'application/rss+xml'. That's unacceptable to us, because that MIME type
# prompts users to download the feed in some browsers, which is confusing.
# Here, we set the MIME type so that it doesn't do that prompt.
class CorrectMimeTypeFeed(Rss201rev2Feed):
    mime_type = 'application/xml'

# This is a django.contrib.syndication.feeds.Feed subclass whose feed_type
# is set to our preferred MIME type.
class EbpubFeed(Feed):
    feed_type = CorrectMimeTypeFeed

هل استخدام طريقة العرض متاح لRSS؟ هذا ما لدي في بلدي urls.py - وأنا لا وضع أي شيء حول الأنماط المتعددة:

urlpatterns += patterns('',
    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': published_feeds}, 'view_name')`,
)

وحيث published_feeds هو شيء من هذا القبيل

class LatestNewsFeed(Feed):
    def get_object(self, bits):
      pass

    def title(self, obj):
      return "Feed title"

    def link(self, obj):
      if not obj:
        return FeedDoesNotExist
      return slugify(obj[0])

    def description(self, obj):
      return "Feed description"

    def items(self, obj):
      return obj[1]

published_feeds = {'mlist': LatestNewsFeed}

عند إنشاء كائن HTTPReponse يمكنك تحديد في نوع المحتوى:

HttpResponse(content_type='application/xml')

وأو أيا كان نوع المحتوى هو في الواقع.

HTTP: // مستندات .djangoproject.com / EN / ديف / المرجع / طلب استجابة / # django.http.HttpResponse .__ init__

وأنا لا تزال مواجهة هذه المشكلة، وبعد 9 سنوات مع فايرفوكس وجانغو 2.1.

ووالحلول المذكورة أعلاه لا قطع عليه، حتى انتهى بي الأمر باستخدام هذا:

class XMLFeed(Feed):
    def get_feed(self, obj, request):
        feedgen = super().get_feed(obj, request)
        feedgen.content_type = 'application/xml; charset=utf-8'
        return feedgen
<ع> استخدام هذه الفئة بدلا من Feed يحدد التمثيل الصامت من نوع إلى "التطبيق / أكس 'كما يريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top