色彩时光 | 记录程序员世界的点点滴滴

django中sitemap生成记录


昨日分析网站的收录,决定做相关的seo优化。1、添加html注释,2、class命名更友好,3、添加文章描述,4、生成网站sitemap。
其中添加文章描述,需要对文章内容进行截取。由于内容为html字符串包含了html标签,怎么过滤html标签并进行内容截取成为研究的问题。

解决办法:运用django中的如下过滤标签。
striptags:过滤掉所有html 标签
removetags:有选择性的过滤html 标签
safe:原原本本显示内容,实际展示给用户的
slice:对内容进行截取
对html内容进行文字截取,那么就用如下过滤代码

{{content|striptags|safe|slice:'60'}}

具体可参考:django 过滤 html标签,截断字符串

然后生成网站sitemap,采用的django框架以及有了相应的模块功能,django.contrib.sitemaps。1、修改setting文件INSTALLED_APPS中加入django.contrib.sitemaps。2、修改默认域名django.contrib.sites.models.Site。3、根据对象规则生成sitemap文件。
具体代码如下:


from django.contrib.sitemaps import GenericSitemap,Sitemap
from licai528.models import Category,Article
from licai528.settings import WEB_SITE
from django.db.models import Q
from django.core.urlresolvers import reverse
from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
one = Site.objects.all()[0]
one.domain = WEB_SITE
one.name = WEB_SITE
one.save()

class StaticViewSitemap(Sitemap):
    priority = 0.5
    changefreq = 'weekly'

    def items(self):
        return ['toolbox','gridTransView','situation'
            ,'reward','doSuggest','disclaimer','log','artEdit']

    def location(self, item):
        return reverse(item)

def createCategorySitemap(category):
    query=Article.objects.filter(category=category,ispublish=1).order_by('-update_time').all()
    sitemaps={
            'queryset': query,
            'date_field': 'update_time',}
    return sitemaps

def createIndexSitemaps():
    sitemaps={}
    sitemaps.setdefault('static',StaticViewSitemap)

    parent_classfy=Category.objects.get(link='jpwz')
    categorys=Category.objects.filter(Q(parent=parent_classfy)).all()
    for item in categorys:
        cate_dict=createCategorySitemap(item)
        gen_sitemap=GenericSitemap(cate_dict,priority=0.6,changefreq='daily')
        sitemaps.setdefault(item.link,gen_sitemap)
    return sitemaps

sitemaps = createIndexSitemaps()

urlpatterns += patterns('django.contrib.sitemaps.views',
    (r'^sitemap\.xml$', 'index', {'sitemaps': sitemaps}),
    (r'^sitemap_(?P<section>.+)\.xml$', 'sitemap', {'sitemaps': sitemaps}),
)

相应参考:
Django 生成sitemap的简单方式
The sitemap framework
Where do I set the domain for my Django Sites framework site, when I only have one?


您可能也对下面文章感兴趣:

Write a Comment


* Content (required) 10~500s

分类

热门标签

友情链接