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在这里。