📜  Django – 站点地图框架

📅  最后修改于: 2022-05-13 01:55:18.674000             🧑  作者: Mango

Django – 站点地图框架

先决条件: Django 介绍和安装

搜索引擎会抓取站点的 URL 并将其编入索引,以在其搜索结果中显示它们。搜索引擎建议明确提交一个 XML 文件,该文件包含您网站的所有重要和更新的 URL,以便更快地进行抓取和索引。 Django 提出了一个站点地图框架来简化生成 XML 文件和 ping 搜索引擎以进行爬网的过程。

让我们了解站点地图的创建使用 以 Geeks For Geeks 为例。假设每天在 Geeks For Geeks 上发布 100 篇文章,我们必须创建一个由这些文章的 URL 组成的 XML 文件。

按照 Django 介绍和安装设置虚拟环境并安装 Django。

步骤1:通过以下命令启动项目



django-admin startproject geeks_site

第 2 步:将目录更改为 geeks_site

cd geeks_site

第 3 步:创建一个名为blog 的应用

python manage.py startapp blog

第 4 步:将您的应用添加到 settings.py

Python3
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig',
]


Python3
class Article(models.Model):
    title = models.CharField(max_length=200)
    lastedit_date = models.DateTimeField()
  
    def get_absolute_url(self):
        return "/p/%i/" % self.id


Python3
# blog/admin.py
from django.contrib import admin 
from .models import Article
  
admin.site.register(Article)


Python3
# Application definition
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,
    'blog'
]
  
SITE_ID = 1


Python3
from django.contrib.sitemaps import Sitemap
from .models import Article
  
class ArticleSitemap(Sitemap):
    def items(self):
        return Article.objects.all()
        
    def lastmod(self, obj):
        return obj.lastedit_date


Python3
from django.contrib.sitemaps.views import sitemap
from blog.sitemap import ArticleSitemap
from django.urls import path
  
  
path('sitemap.xml', sitemap, {'sitemaps': {'article' : ArticleSitemap}},
     name='django.contrib.sitemaps.views.sitemap')


第 5 步:博客应用中创建一个名为Article 的模型

  • 领域:
    • 标题:存储文章对象的标题
    • lastedit_date:存储文章对象的最后更新日期
  • 方法 :
    • get_absolute_url:返回指向对象的绝对 URL

模型.py

蟒蛇3

class Article(models.Model):
    title = models.CharField(max_length=200)
    lastedit_date = models.DateTimeField()
  
    def get_absolute_url(self):
        return "/p/%i/" % self.id

第 6 步:在 blog/admin.py 中注册您的模型,以便它显示在管理面板中。



管理文件

蟒蛇3

# blog/admin.py
from django.contrib import admin 
from .models import Article
  
admin.site.register(Article)

第 7 步:现在,要迁移所有更改并启动服务器,请在终端中运行以下命令

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

创建一个超级用户帐户以登录管理面板

python manage.py createsuperuser

现在,访问管理面板 http://127.0.0.1:8000/admin/

现在,让我们安装并初始化 Django 的站点地图框架

安装站点地图

要使用站点地图框架,您需要对settings.py进行以下更改:

  • Django默认没有启用Sitemap Framework,所以在INSTALLED_APPS中添加以下内容
django.contrib.sitemaps
  • 站点地图框架使用另一个 Django 的内置站点框架来运行。另外,将以下内容添加到INSTALLED_APPS
django.contrib.sites

然后在 INSTALLED_APPS 列表后添加以下内容

SITE_ID = 1

蟒蛇3



# Application definition
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,
    'blog'
]
  
SITE_ID = 1

站点地图的初始化

第 1 步:在您的博客应用中创建一个名为sitemap.py 的文件

第 2 步:在 sitemap.py 中为您的文章模型创建一个 Sitemap 类

  • ArticleSitemap 类覆盖了 Sitemap 类的以下两个方法
    • items:返回所有文章对象,其 URL 将包含在 XML 文件中
    • lastmod:使用博客应用中文章模型的 lastedit_date字段返回对象的最后修改日期

网站地图.py

蟒蛇3

from django.contrib.sitemaps import Sitemap
from .models import Article
  
class ArticleSitemap(Sitemap):
    def items(self):
        return Article.objects.all()
        
    def lastmod(self, obj):
        return obj.lastedit_date

第 3 步:将这些行添加到您的blog/urls.py。

蟒蛇3

from django.contrib.sitemaps.views import sitemap
from blog.sitemap import ArticleSitemap
from django.urls import path
  
  
path('sitemap.xml', sitemap, {'sitemaps': {'article' : ArticleSitemap}},
     name='django.contrib.sitemaps.views.sitemap')

这里的'sitemap.xml ' 指向 Sitemap 框架的站点地图视图,其中 ArticleSitemap类在上一步中创建为指定格式的必需参数,即{'sitemaps': {'article' : ArticleSitemap}

现在,再次迁移所有更改并启动服务器

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

第 4 步:在文章部分,创建一些文章。单击添加按钮后,您将看到以下字段。



当您单击“站点”部分时,您会看到类似这样的内容

对管理面板的站点部分进行以下更改

现在在您的本地机器上访问 http://127.0.0.1:8000/sitemap.xml。包含所有 URL 的最终 XML 文件将呈现为: