如果对django sitemap不太熟悉,请阅读:

django sitemap网站地图生成详解

优化代码如下:

sitemap.py

from django.contrib.sitemaps import Sitemap



class PeopleViewSitemap(Sitemap):
    priority = 1
    changefreq = 'daily'
    # 每个sitemap显示的网址数量,默认为50000 不建议这样使用
    limit = 1000


    def items(self):
        return People.objects.all().order_by("id")


    def lastmod(self, obj):
        return obj.create_time


class PoemsViewSitemap(Sitemap):
    priority = 1
    changefreq = 'daily'
    # 每个sitemap显示的网址数量,默认为50000 不建议这样使用
    limit = 1000


    def items(self):
        return Poems.objects.all().order_by("id")


    def lastmod(self, obj):
        return obj.create_time

注意:一定要写order_by,否则django会有警告信息提示:

分页警告提示UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list

urls.py

from django.urls import path, include
from django.contrib.sitemaps import views
from .sitemap import *

sitemaps = {

    'shiren': PeopleViewSitemap,
    'shici': PoemsViewSitemap,

}

urlpatterns = [
    # 将sitemap进行分页
    path('sitemap.xml', views.index, {'sitemaps': sitemaps},),
    # 单个sitemap的详细信息
    path('sitemap-<section>.xml', views.sitemap, {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap'),

如果觉得sitemap还不够快,可以采用缓存策略

urls.py

from django.urls import path, include
from django.contrib.sitemaps import views
    from django.views.decorators.cache import cache_page
from .sitemap import *

sitemaps = {

    'shiren': PeopleViewSitemap,
    'shici': PoemsViewSitemap,

}

urlpatterns = [
    # 将sitemap进行分页
    path('sitemap.xml', cache_page(86400)(views.index), {'sitemaps': sitemaps},),
    # 单个sitemap的详细信息
    path('sitemap-<section>.xml', cache_page(86400)(views.sitemap), {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap'),


本文地址: http://chenxm.cc/article/1215.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
上一篇: django form设置默认初始值
下一篇: sql LEFT JOIN与LEFT OUTER JOIN 的区别
发表评论

还没有留言,还不快点抢沙发?