码迷,mamicode.com
首页 > 其他好文 > 详细

Django:之Sitemap站点地图、通用视图和上下文渲染器

时间:2016-04-13 23:28:54      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

Django中自带了sitemap框架,用来生成xml文件

Django sitemap演示:

sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录。

开启sitemap功能的步骤

settings.py文件中django.contrib.sitemaps和django.contrib.sites要在INSTALL_APPS中

INSTALLED_APPS = (
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘django.contrib.sites‘,
    ‘django.contrib.sitemaps‘,
    ‘django.contrib.redirects‘,
     
    #####
    #othther apps
    #####
)

Django 1.7及以前版本:

TEMPLATE_LOADERS中要加入‘django.template.loaders.app_directories.Loader’,像这样:

TEMPLATE_LOADERS = (
    ‘django.template.loaders.filesystem.Loader‘,
    ‘django.template.loaders.app_directories.Loader‘,
 )

Django 1.8及以上版本新加入了TEMPLATES设置,其中APP_DIRS要为True,比如:

# NOTICE: code for Django 1.8, not work on Django 1.7 and below
TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [
            os.path.join(BASE_DIR,‘templates‘).replace(‘\\‘, ‘/‘),
        ],
        ‘APP_DIRS‘: True,
    },
]

然后在urls.py中如下配置:

from django.conf.urls import url
from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap
 
from blog.models import Entry
 
 
sitemaps = {
    ‘blog‘: GenericSitemap({‘queryset‘: Entry.objects.all(), ‘date_field‘: ‘pub_date‘}, priority=0.6),
    # 如果还要加其它的可以模仿上面的
}
 
urlpatterns = [
    # some generic view using info_dict
    # ...
 
    # the sitemap
    url(r‘^sitemap\.xml$‘, sitemap, {‘sitemaps‘: sitemaps},
        name=‘django.contrib.sitemaps.views.sitemap‘),

但是这样生成的sitemap,如果网站内容太多就很慢,很耗费资源,可以采用分页的功能:

from django.conf.urls import url
from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap
 
from blog.models import Entry
 
from django.contrib.sitemaps import views as sitemaps_views
from django.views.decorators.cache import cache_page
 
 
sitemaps = {
    ‘blog‘: GenericSitemap({‘queryset‘: Entry.objects.all(), ‘date_field‘: ‘pub_date‘}, priority=0.6),
    # 如果还要加其它的可以模仿上面的
}
 
urlpatterns = [
    url(r‘^sitemap\.xml$‘,
        cache_page(86400)(sitemaps_views.index),
        {‘sitemaps‘: sitemaps, ‘sitemap_url_name‘: ‘sitemaps‘}),
    url(r‘^sitemap-(?P<section>.+)\.xml$‘,
        cache_page(86400)(sitemaps_views.sitemap),
        {‘sitemaps‘: sitemaps}, name=‘sitemaps‘),
]

这样就可以看到类似如下的sitemap,如果本地测试访问http://localhost:8000/sitemap.xml

  

  

  

  

 

 

 

 

 

 

 

 

 

 

 

  

Django:之Sitemap站点地图、通用视图和上下文渲染器

标签:

原文地址:http://www.cnblogs.com/wulaoer/p/5389213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!