/ / Django TypeError at /sitemap.xml अनुक्रम अनुक्रमणिका पूर्णांक होनी चाहिए, 'स्लाइस' नहीं - अजगर, डीजेंगो

/Sitemap.xml अनुक्रम अनुक्रमणिका पर Django TypeError पूर्णांक होना चाहिए, 'टुकड़ा' नहीं - पायथन, django

मुझे अपने साइटमैप पेज के साथ अजीब समस्या है।

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import datetime
import urllib

from django.core.urlresolvers import reverse
from django.contrib.sitemaps import Sitemap
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from pytz import UTC

from mychat.models import Question

MONTHLY = "monthly"
WEEKLY = "weekly"
DAILY = "daily"
HOURLY = "hourly"
now = datetime.datetime.utcnow().replace(tzinfo=UTC)

# The following lists are separated only for fixed ordering.


class RecentForumViewPaginationSitemap(Sitemap):
"""
Sitemap generator that takes Django Recent tab in forum list view and
generates all pages in pagination.
"""
changefreq = DAILY
priority = 0.90
protocol = "https"

def items(self):
post_queryset = Question.objects.all().order_by("-created")
paginator = Paginator(post_queryset, 12)
return paginator.page_range

def location(self, page):
return "?".join([reverse("question_list"), urllib.urlencode({"recent_page": page})])

sitemaps = {
"recent_forum_views": RecentForumViewPaginationSitemap,
}

यह हाल ही में Django 1.9.7 के उन्नयन के बाद फैल गया

urls.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.conf.urls import patterns, url

from my.sitemap import sitemaps

urlpatterns = patterns(
"",
url(r"^sitemap.xml$", "django.contrib.sitemaps.views.sitemap", {"sitemaps": sitemaps,
"template_name": "my/custom_sitemap.xml"}),
)

custom_sitemap.xml

<?xml version="1.0" encoding="utf-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
{% spaceless %}
{% for url in urlset %}
<url>
<loc>{{ url.location }}</loc>
{% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
{% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
{% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
</url>
{% endfor %}
{% endspaceless %}
</urlset>

मुझे ट्रेसबैक मिल रहा है:

ERROR base.handle_uncaught_exception.284 Internal Server Error: /sitemap.xml
Traceback (most recent call last):
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/contrib/sitemaps/views.py", line 16, in inner
response = func(request, *args, **kwargs)
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/contrib/sitemaps/views.py", line 67, in sitemap
protocol=req_protocol))
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py", line 104, in get_urls
urls = self._urls(page, protocol, domain)
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py", line 112, in _urls
for item in self.paginator.page(page).object_list:
File "/home/bartosz/.virtualenvs/my9/local/lib/python2.7/site-packages/django/core/paginator.py", line 55, in page
return self._get_page(self.object_list[bottom:top], number, self)
TypeError: sequence index must be integer, not "slice"

मुझे आश्चर्य है कि अगर किसी को हाल ही में इसी तरह की समस्या का सामना करना पड़ा या वह मुझे इसे हल करने के लिए सही दिशा में इंगित कर सकता है। किसी भी सलाह के लिए धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

मुझे लगता है कि यह आपका पिछड़ा-असंगत परिवर्तन है:

इसे हल करने के लिए सूची से लौटें items() तरीका:

def items(self):
post_queryset = Question.objects.all().order_by("-created")
paginator = Paginator(post_queryset, 12)
return list(paginator.page_range)

नोट: मैं Django और साइटमैप ढांचे में एक विशेषज्ञ होने से बहुत दूर हूं - इसे हल करने का एक बेहतर तरीका हो सकता है। मुझे उम्मीद है कि यह कम से कम सही दिशा में एक कदम होगा।