接外包,有相关需求的可以联系我:Telegram | Email

如何配置Django的动态站点地图?

该文章创建(更新)于06/13/2022,请注意文章的时效性!

用Django写了一个Blog,这其中必然少不了站点地图,这站点地图对于一个网站有多重要我就不说了。

settings.py配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sitemaps', # sitemap
]

模型配置

sitemap有些属性必不可少。

class content(models.Model):
    # 下面的时间需要,也可以不配置
    pub_time = models.DateTimeField(auto_now_add=True)
    # 这个也要
    def get_absolute_url(self):
        """ sitemap地图 这里返回该文章对象的绝对url地址 这里根据你自己的url来确定 """
        return "/content/{}".format(self.pk)

sitemaps.py配置

该文件在项目的application下面创建

# sitemaps.py
from django.contrib.sitemaps import Sitemap
from .models import content


class contentSitemap(Sitemap):
    protocol = "https"  # 协议 可选 "http" or "https"
    priority = 0.5  # 权重
    changefreq = 'daily'  # 频率

    def items(self):  # 返回对象的列表.这些对象将被其他方法或属性调用
        return content.objects.all()

    def lastmod(self, obj):  # 可选,该方法返回一个datetime,表示每个对象的最后修改时间
        # 这里和模型中的pub_time对于,如果不需要要也可以直接设定值
        return obj.pub_time

    def location(self, obj):  # 可选.返回每个对象的绝对路径.如果对象有get_absolute_url()方法,可以省略location
        return "/content/{}".format(obj.id)

url路由配置

from .sitemaps import contentSitemap
from django.conf.urls import url

# 这里还可以添加分类页,标签页,静态页面等,这里只演示文章详情页
sitemaps = {
    'article': contentSitemap
}

urlpatterns = [
    url(r'^sitemap.xml/$',sitemap, {'sitemaps': sitemaps}, name='sitemap'),  # 网站地图
]


👇 Share | 分享 👇


要不赞赏一下?

微信
支付宝
PayPal
Bitcoin

版权声明 | Copyright

除非特别说明,本博客所有作品均采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明转自-
https://www.emperinter.info/2022/06/13/how-to-configure-djangos-dynamic-sitemap/


要不聊聊?

我相信你准备留下的内容是经过思考的!【勾选防爬虫,未勾选无法留言】

*

*



微信公众号

👉 NewsLetter ❤️ 邮箱订阅 👈

优惠码


阿里云国际版20美元
Vultr10美元
搬瓦工 | Bandwagon应该有折扣吧?
域名 | namesiloemperinter(1美元)