33.Django站点地图

栏目: Python · 发布时间: 5年前

内容简介:Sitemap(站点地图)是通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录。 白话文就是:一个写了你网站的所有url的xml文件,告诉搜索引擎,请及时收录我的这些地址。setting.pymodels.py

Sitemap(站点地图)是通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录。 白话文就是:一个写了你网站的所有url的xml文件,告诉搜索引擎,请及时收录我的这些地址。

结构:

33.Django站点地图

setting.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'django.contrib.sitemaps', # 新加的

    'mysite.apps.MysiteConfig',
]

models.py

from django.db import models

class Blog(models.Model):

    title = models.CharField(max_length=20)
    content = models.TextField()

    pub_date = models.DateTimeField(auto_now=True)

    # 必须有 转换url用的
    def get_absolute_url(self):
        return '/post/%s.html' % (self.id)

views.py

from django.shortcuts import HttpResponse

from .models import Blog

def index(request):
    # 模拟往数据库添加博客
    for x in [0,1,2,3]:
        Blog(title='title-%d' % x, content='content-%d' % x).save()
    return HttpResponse('ok')

urls.py

from django.contrib import admin
from django.urls import path

# 站点地图相关
from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap

# 自己使用
from mysite.models import Blog
from mysite.views import index

# 站点地图的数据源
sitemaps = {
    'blog': GenericSitemap({'queryset': Blog.objects.all(), # 查询Blog的所有数据
                            'date_field': 'pub_date'},  # 依据Blog中的pub_date时间
                            priority=0.6)
}

urlpatterns = [
    path('admin/', admin.site.urls),
    # 站点地图的URL  http://127.0.0.1/sitemap.xml
    path('sitemap.xml', sitemap,
         {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap'),
    # 首页
    path('', index)
]

同步数据库

$ python3 manage.py makemigrations
$ python3 manage.py migrate

首先访问 http://127.0.0.1/ 往数据库添加模拟数据。

查看db.sqlite3 33.Django站点地图

然后访问 http://127.0.0.1/sitemap.xml 33.Django站点地图

这样可以提交到搜索引擎中,比如google: https://search.google.com/search-console 33.Django站点地图

自定义Sitemap类

上面我们使用的是Django自带的sitemap类GenericSitemap。这个我们可以自定义。

urls.py

from django.contrib import admin
from django.urls import path

from django.contrib.sitemaps import Sitemap
from django.contrib.sitemaps.views import sitemap

from mysite.models import Blog
from mysite.views import index

# 自定义一个sitemap类
class BlogSitemap(Sitemap):
    changefreq = 'never'
    priority = 0.5

    def items(self):
        return Blog.objects.all()

    def lastmod(self, obj):
        return obj.pub_date

# 添加到数据源中
sitemaps = {
    'blog': BlogSitemap()
}

urlpatterns = [
    path('admin/', admin.site.urls),
    path('sitemap.xml', sitemap,
         {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap'),
    path('', index)
]
  • changefreq:当前条目修改的频率 对应于HTML页面中的 标签。
    'always'
    'hourly'
    'daily'
    'weekly'
    'monthly'
    'yearly'
    'never'
  • priority:优先级 对应于HTML页面中的 标签。
  • items()只是一个返回对象列表的方法。
  • lastmod:最后修改时间 方法应该返回一个datetime时间对象。
  • location:不包含协议和域名,在此示例中没有编写location方法,但你可以自己增加此方法来指定对象的URL。 默认情况下,location()在每个对象上调用get_absolute_url()并将返回结果作为对象的url。也就是说,使用站点地图的模型,比如Entry,需要在模型内部实现get_absolute_url()方法。
  • protocol:网站的协议
  • limit:最大超连接数
  • i18n:boolean属性,是否使用所有语言生产站点地图,默认False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

引爆社群:移动互联网时代的新4C法则(第2版)

引爆社群:移动互联网时代的新4C法则(第2版)

唐兴通 / 机械工业出版社 / 69.00元

社群已经被公认为是这个时代的商业新形态,原有的商业逻辑和方法被颠覆,新的基于社群的商业体系和规则亟待构建,今天几乎所有的企业都在为此而努力,都在摸索中前行。 本书提出的“新4C法则”为社群时代的商业践行提供了一套科学的、有效的、闭环的方法论,第1版上市后获得了大量企业和读者的追捧,“新4C法则”在各行各业被大量解读和应用,积累了越来越多的成功案例,被公认为是社群时代通用的方法论。也因此,第1......一起来看看 《引爆社群:移动互联网时代的新4C法则(第2版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具