程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Django如何使用sitemap實現網站地圖

編輯:Python

網站地圖是一個網站裡所有鏈接的集合,搜索引擎可以根據網站地圖很輕松的抓取你sitemap裡面記錄的網址,所以把網站地圖提交給搜索引擎,讓其錄入你的內容,是提高自己網站流量很重要的一個手段,尤其是對於新建網站,網站地圖是SEO必要的手段,下面就簡單介紹下Django項目如何快速生成網站地圖sitemap

1. 安裝sitemap

sitemap是一個app,所以要使用它,需要先安裝這個app,在項目的setting.py文件的INSTALLED_APPS裡,增加如下:

'django.contrib.sitemaps',

2. 實現sitemap生成文件

在項目app下新建sitemaps.py文件,比如要實現博客文章的鏈接放進sitemap裡面,在blog app下新建sitemap.py文件,定義ArticleSitemap類,繼承Django的類Sitemap,如下:

class ArticleSitemap(Sitemap):
changefreq = 'weekly'
priority = 1.0
def items(self):
return Article.objects.all()
def lastmod(self, obj):
if obj.update_date:
return obj.update_date
return obj.add_time

用到了Sitemap類,別忘了import它

from django.contrib.sitemaps import Sitemap

a. changefreq和priority對應sitemap.xml裡面的changefreq和priority。

b. item方法是返回你所有的文章object,locate()會對item返回的object去調用get_absolute_url方法,這個值會放在xml裡面loc的位置。

c. 所以,如果不去重寫locate方法,就需要你在對應的model裡面實現get_absolute_url方法,比如這裡是Article的model裡面需要實現get_absolute_url方法,這裡要注意的是參數要和url裡面配置的匹配。因為用到了reverse,所以需要導入。

from django.urls import reverse
def get_absolute_url(self):
return reverse('blog:article_detail', kwargs={'article_id': self.id})

d. lastmod同樣對應於xml裡面的lastmod

e. 這樣就完成了一個model的sitemap實現, 同樣的方法可以實現其他需要放進sitemap裡的model

3. 使sitemap生效

在項目的url.py裡面,加入sitemap.py裡面實現的類,如下:如果還有其他實現的類,加在sitemaps字典裡就可以了。

from blog.sitemaps import ArticleSitemap
sitemaps = {
'articles': ArticleSitemap
}

在urlpatterns裡面加入url,如下:

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

這裡用到了sitemap,所以需要import這個模塊

from django.contrib.sitemaps.views import sitemap

4. 前端html頁面設置

在網站底部,根據頁面排版增加sitemap的超鏈接,如下

<a href="/sitemap.xml" title="Sitemap" target="_blank">網站地圖</a>

5. 查看效果

如果這些都配置好了,那麼就可以在浏覽器裡輸入 網站地址/sitemap.xml查看,也可以直接點網站底部的網站地圖,會自動跳轉到網站地址/sitemap.xml,比如我的網站地圖在 http://www.0a0z.cn/sitemap.xml,可以看下網站地圖的格式。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved