在django中添加sitemap

分类: Python 作者: 浏览:74 时间:2019年4月27日 23:42 评论:0

Sitemap可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站

django中添加sitemap,首先要把相关APP应用安装到settings.py中的INSTALL_APP中,这里无需使用pip,django从1.6开始,默认情况下不启用site框架,所以我们只需要启用即可~

INSTALL_APP = [  
    ''',  
    "django.contrib.sites",  
    "django.contrib.sitemaps",  
]  
SITE_ID = 1  

这里我还添加了SITE_ID= 1,如过不设置可能会登录后台报错,表示指定当前站点
然后登录后台,会多了一个站点(SITE)
站点
修改为你自己的域名和名称,如果你是本地开发域名为设置为127.0.0.1:8000

添加sitemap功能

在项目文件夹下新增sitemap.py

from django.contrib.sitemaps import Sitemap  
from apps.blog.models import Article, Category, Tag  
from django.urls import reverse  

class ArticleSiteMap(Sitemap):  
    """changefreq 更新频率  
        priority 相对于其它页面的优先权"""  
    changefreq = "monthly"  
    priority = "0.6"  

    def items(self):  
        return Article.objects.all()  

    def lastmod(self, obj):  
        """上次修改时间"""  
        return obj.modified_time  

    def location(self, obj):  
        """可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location"""  
        return reverse("blog:detail", kwargs={"pk":obj.id})  


class CategorySiteMap(Sitemap):  
    changefreq = "Weekly"  
    priority = "0.6"  

    def items(self):  
        return Category.objects.all()  

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

    def location(self, obj):  
        """可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location"""  
        return reverse("blog:category", kwargs={"pk":obj.id})  


class TagSiteMap(Sitemap):  
    """  
        changefreq 更新频率  
        priority 相对于其它页面的优先权  
    """  
    changefreq = "Weekly"  
    priority = "0.3"  

    def items(self):  
        return Tag.objects.all()  

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

    def location(self, obj):  
        """可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location"""  
        return reverse("blog:tags", kwargs={"pk": obj.id})  

urls.py增加

from DjangoBlog.sitemap import ArticleSiteMap, CategorySiteMap, TagSiteMap  
sitemaps = {  
    "blog": ArticleSiteMap,  
    "Category": CategorySiteMap,  
    "Tag": TagSiteMap,  
}  

re_path(r"^sitemap\.xml$", sitemap, {"sitemaps": sitemaps},  
        name="django.contrib.sitemaps.views.sitemap"),  

浏览器中访问: http://127.0.0.1:8000/sitemap.xml

赞(0)
上一篇:
下一篇:

评论(0)

  • 暂无评论