Django中的网站地图有什么作用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强> sitemap 强>是你服务器上的一个XML文件,它告诉搜索引擎你的页面的更新频率和某些页面相对于其它页面的重要性。这个信息会帮助搜索引擎索引你的网站。
例如,这是Django网站(http://www.djangoproject.com/sitemap.xml)网站地图的一部分:
& lt; ? xml version=?.0“,编码=癠TF-8" ?比; & lt; urlset  xmlns=癶ttp://www.sitemaps.org/schemas/sitemap/0.9"比; ,& lt; url> & lt;才能loc> http://www.djangoproject.com/documentation/</loc> & lt;才能changefreq> weekly</changefreq> & lt;才能priority> 0.5 & lt;/priority> ,& lt;/url> ,& lt; url> & lt;才能loc> http://www.djangoproject.com/documentation/0_90/</loc> & lt;才能changefreq> never</changefreq> & lt;才能priority> 0.1 & lt;/priority> ,& lt;/url> ,…… & lt;/urlset>
需要了解更多有关sitemaps的信息,请参见http://www.sitemaps.org/?/p>
Django站点地图框架允许你用Python代码来表述这些信息,从而自动创建这个XML文件。要创建一个站点地图,你只需要写一个“站点地图”的类,并且在URLconf中指向它。
<>强安装强>
要安装地图应用程序,按下面的步骤进行:
将& # 39;django.contrib.sitemaps& # 39;添加到您的INSTALLED_APPS设置中。
确保& # 39;django.template.loaders.app_directories.load_template_source& # 39;在您的TEMPLATE_LOADERS设置中。默认情况下它在那里,所以,如果你已经改变了那个设置的话,只需要改回来即可。
确定您已经安装了网站框架。
<强>注意强>
站点地图应用程序没有安装任何数据库表。它需要加入到INSTALLED_APPS中的唯一原因是:这样load_template_source模板加载器可以找到默认的模板。
要在您的Django站点中激活sitemap生成,请在您的URLconf中添加这一行:
(" # 39;^ sitemap . xml \ $ & # 39;,, & # 39; django.contrib.sitemaps.views.sitemap& # 39;,, {& # 39; sitemaps # 39;:, sitemaps})
sitemap文件的名字无关紧要,但是它在服务器上的位置却很重要。搜索引擎只索引你的站点地图中当URL前级别及其以下级别的链接。用一个实例来说,如果站点地图。xml位于你的根目录,那么它将引用任何的URL。然而,如果你的站点地图位于/内容/网站地图。xml,那么它只引用以/内容/打头的URL。
sitemap视图需要一个额外的必须的参数:{& # 39;sitemaps # 39;: sitemaps}只
<强> sitemap类强>
sitemap类展示了一个进入地图站点简单的Python类片断。例如,一个Sitemap类能展现所有日志入口,而另外一个能够调度所有的日历事件只
在最简单的例子中,所有部分可以全部包含在一个网站地图。xml中,也可以使用框架来产生一个站点地图,为每一个独立的部分产生一个单独的站点文件。
Sitemap类必须是django.contrib.sitemaps。网站地图的子类。他们可以存在于您的代码树的任何地方。
例如假设你有一个博客系统,有一个条目的模型,并且你希望你的站点地图包含所有连到你的博客入口的超链接。你的站点地图类很可能是这样的:
得到django.contrib.sitemaps import 网站地图 得到mysite.blog.models import 条目 , class BlogSitemap(地图): changefreq =,才能“never" priority 才能=0.5 , def 才能;项目(自我): ,,,return Entry.objects.filter (is_draft=False) , def 才能lastmod(自我,,obj): ,,,return obj。pub_date
声明一个站点地图和声明一个提要看起来很类似;这都是预先设计好的。
如同饲料类一样,站点地图成员也既可以是方法,也可以是属性。
一个Sitemap类可以定义如下方法/属性:
项目(必需):提供对象列表。框架并不关心对象的类型;唯一关心的是这些对象会传递给位置(),lastmod (), changefreq(),和优先级()方法。
位置(可选):给定对象的绝对URL。绝对URL不包含协议名称和域名。下面是一些例子:
好的:& # 39;/foo/bar/& # 39;& # 39;/foo/bar/& # 39;
差的:& # 39;example.com/foo/bar/& # 39;& # 39;example.com/foo/bar/& # 39;
如果没有提供位置,框架将会在每个项目()返回的对象上调用get_absolute_url()方法。
lastmod(可选):对象的最后修改日期,作为一个Python datetime对象。对象# 39;最后修改日期,作为一个Python datetime对象。