文章目录[隐藏]
用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'), # 网站地图
]