从Django View渲染XML站点地图



django视图中的以下代码:

def sitemap(request):
    return render(request, 'sitemap.xml', content_type = 'text/xml')

产生以下错误:

异常类型:Unicodedecodeerror异常值:
'utf8'编解码器无法在位置0中解码字节0xff:无效启动字节

如何解决这个问题?我要做的就是渲染XML站点地图。任何帮助,将不胜感激。谢谢。

django支持内置站点地图,这是一个演示:

common/stitemaps.py

from django.contrib.sitemaps import Sitemap
from django.urls import reverse_lazy
from news.models import News

class StaticViewSitemap(Sitemap):
    priority = 0.5
    changefreq = 'weekly'
    def items(self):
        return ['index', 'news_index', 'version', 'rss']
    def location(self, item):
        return reverse_lazy(item)

class NewsSitemap(Sitemap):
    priority = 0.5
    changefreq = 'weekly'
    def items(self):
        return News.objects.all().order_by('-id')
    def location(self, item):
        return reverse_lazy('news_detail', kwargs={'pk': item.id})

sitemaps = {
    'static': StaticViewSitemap,
    'news': NewsSitemap,
}

您的peoject Main Url.py:

from django.contrib.sitemaps.views import sitemap
from common.sitemaps import sitemaps
urlpatterns = [
    url(r'^$', IndexView.as_view(), name='index'),
    url(r'^admin/', admin.site.urls),
    url(r'^news/', include('news.urls')),
    url(r'^sitemap.xml$', sitemap, {'sitemaps': sitemaps}, name='sitemap')
]

doc在这里。

最新更新