首先打开你的项目下的setting.py文件,然后找到 INSTALLED_APPS这个列表变量,然后在里面加入如下两项:
1 2 |
['django.contrib.sites', 'django.contrib.sitemaps',] |
然后在settings.py中的任意位置加入一个 SITE_ID = 1 的变量,然后在你的项目根目录运行下面的命令进行数据库同步,
1 |
python manage.py migrate |
然后我们来到项目的urls.py文件中,先import一个用于sitemap的django类和你的假定表示文章的数据库模型Post,
1 2 |
from django.contrib.sitemaps import GenericSitemap from blog.models import Post |
紧接着,我们在urls.py中新建一个字典,再定义一个path(),如下:
1 2 3 4 5 6 |
article_dict = { 'queryset': Post.objects.all(), } path('sitemap.xml', sitemap, {'sitemaps': {'blog': GenericSitemap(article_dict, priority=0.6)}}) |
然后我们还要到项目的models.py中假定你的表示文章的数据库模型Post()中新增一个如下函数,
1 2 |
def get_absolute_url(self): return reverse('article_detail', args=[str(self.slug)]) |
说明一下,上述的self.slug表示你的文章的url链接的数据库字段名,如果你用id当做url的话,上述就应该用self.id了。
最后我们来到django admin面板,找到站点管理下的站点-站点(如果你的面板是英文的自行改成中文就行了),点进去把里面的域名和显示名称中的example.com改成你自己的域名就行了,好了,现在大工告成,你可以在这访问一下本站的 sitemap链接 测试一下。