Django 站点地图索引示例
我有以下模型关系:
class Section(models.Model):
section = models.CharField(max_length=200, unique=True)
name = models.CharField(max_length=200, blank = True)
class Article (models.Model):
url = models.CharField(max_length = 30, unique=True)
is_published = models.BooleanField()
section = models.ForeignKey(Section)
我需要为文章创建站点地图,其中包含部分的站点地图文件。我在这里阅读有关它的 django 文档 http://docs.djangoproject.com/ en/dev/ref/contrib/sitemaps/
但没有找到答案我该如何:
- 在这种情况下定义站点地图类
- 如何将部分参数传递到 url 文件中(如中所述 文档)
- 如果我定义了,我可以从哪里获取 {'sitemaps': sitemaps} 站点地图作为应用程序中另一个文件中的 python 类
I have following models relation:
class Section(models.Model):
section = models.CharField(max_length=200, unique=True)
name = models.CharField(max_length=200, blank = True)
class Article (models.Model):
url = models.CharField(max_length = 30, unique=True)
is_published = models.BooleanField()
section = models.ForeignKey(Section)
I need to create a sitemap for articles, which contains sitemap files for sections. I was reading django documentation about it here http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/
But didn't manage to find answer how can I:
- Define sitemap class in this case
- How can I pass section parameters into url file (as it's explained in
the docs) - From where can I get {'sitemaps': sitemaps} if I defined
sitemap as a python class in another file in the application
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果我理解正确的话,您想要使用站点地图索引,该索引将指向每个部分的单独站点地图 xml 文件。
Django 通过提供单独的站点地图视图来支持此功能 用于索引站点地图。
以前没有使用过该功能,但类似以下内容可能适用于您的情况。
If i understand correctly you want to use sitemap index that would point at seperate sitemap xml files each for every section.
Django supports this feature by providing a separate sitemap view for index sitemaps.
Haven't used that feature before but something like the following would probably work in your case.
这是在 Django 中使用站点地图索引的更好、更简单的方法,
通过将
django.contrib.sitemaps
添加到settings.py
的INSTALLED_APPS
中来安装项目中的django.contrib.sitemaps
。在您的应用程序中编写 sitemaps.py 文件并根据需要定义类。例如,在静态 URL 的
StaticViewSitemap
站点地图类中扩展django.contrib.sitemap.Sitemap
,确保所有静态 URL 的名称为反向
查找(从URL名称获取URL)导入urls.py中的所有站点地图
从 django.contrib.sitemaps.views 导入站点地图和索引
然后创建一个包含站点地图的字典
这里您将有两个站点地图1.sitemaps.xml 2.sitemaps-static.xml
运行服务器打开 URL: http://localhost:8000/sitemap.xml
Django 自动创建了一个索引站点地图现在打开 URL:http://127.0.0.1:8000/sitemap-static.xml
Here is the better and easy way to use sitemap index in Django,
install
django.contrib.sitemaps
in the project by adding it toINSTALLED_APPS
ofsettings.py
.Write sitemaps.py file in your apps and define classes as you need. Example extend
django.contrib.sitemap.Sitemap
inStaticViewSitemap
sitemap class for static URLs, make sure your all static URL has the name forreverse
lookup(getting URL from URL name)Import all sitemaps in urls.py
import sitemap and index from
django.contrib.sitemaps.views
then create a dictionary with sitemaps
Here you will have two sitemaps 1. sitemaps.xml 2. sitemaps-static.xml
Run server open URL: http://localhost:8000/sitemap.xml
Django automatically created an index of sitemaps now open URL: http://127.0.0.1:8000/sitemap-static.xml
对我来说,接受的答案会影响开发和测试周期速度,因为它使 python manage.py 命令运行得更慢——我在数据库中要做的事情比这个例子多一些。
以下是我为缓解而所做的更改(适应示例)。还没有进行战斗测试,但这似乎可以解决问题(Python3):
For me, the accepted answer was impacting development and testing cycle speed since it made
python manage.py
commands run more slowly -- I had a little more to do in the DB than this example.Here are the changes I made to mitigate (adapted to the example). Have yet to battle test it but this seems to do the trick (Python3):