Django SEO:5 种提升 SEO 的方法
这周我决定研究一下如何提升我个人网站的SEO。我对此了解不多,但经过一番研究,我发现开发人员可以在他们的Django网站上做一些事情来提升SEO。
什么是 SEO?
什么是搜索引擎优化?这是一个庞大的话题,但作为一名网站开发者,你只需要知道,搜索引擎优化就是对你的网站进行一些修改(优化),让谷歌等搜索引擎更容易抓取和索引你的内容,从而让人们更容易发现你的内容。
你为什么要学习它?
开发人员应该学习SEO,这样他们在开发网页时就能有所规划。如果你不优化你的页面,它就不会出现在搜索结果中,其他人也就不知道你的网站了。对于自由职业的网页开发者来说,SEO也是一项很好的补充技能,这样他们就可以为客户提供更全面的服务。
让我们看看改善 Django 网站 SEO 的几种方法。
蛞蝓
Django 为其模型提供了一个 SlugField。Slug 是仅包含字母、数字、下划线或连字符的短标签。我们应该根据 Slug 字段创建 URL。为了给 Post 模型创建规范 URL,我们根据 Django 的约定添加了一个创建 URL 的方法。get_absolute_url()
from django.db import models
from django.utils import timezone
class Post(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique_for_date=‘publish’)
publish = models.DateTimeField(default=timezone.now)
def get_absolute_url(self):
return reverse(‘blog:post_detail’,
args=[self.publish.year,
self.publish.month,
self.publish.day, self.slug])
这里我们创建一个 Post 模型,并根据发布日期和 slug 创建规范 URL,例如 /2020/04/07/post-title/
元标签
元标记向搜索引擎提供有关您网站的信息,它们应该放置<head>
在 HTML 文档的标记内。
标题
当您的页面出现在搜索结果中时,这将是第一行/链接。
每个页面都应该有一个独特的标题标签,并且应该简短且具有描述性。
不要使用通用标题,或在多个页面上使用相同的标题。
<title>This is page Title</title>
描述
这是最重要的标签,它提供了关于您网站页面的描述。Google 通常会将其用作搜索结果中的预览片段。
每个页面的描述都应该独一无二,概括页面内容,并且简短 1-2 句话。与标题相同,请勿使用通用的描述或在页面上重复。
<meta name="description" property="og:description" content="This article looks at 6 methods developers can use to improve SEO of their Django Website">
关键词:
这是一个关键词元标签,含义不言自明。在这里,我们输入概括我们页面的关键词。
<meta name="keywords" content="seo, python, django, web development">
作者
如果是文章或类似内容,我们在此标签中指定作者的姓名。
<meta name="author" content="Maciej Janowski">
Open Graph 元标签
Open Graph 由 Facebook 创建,旨在通过允许粘贴的内容成为“图谱”对象,促进 Facebook 与第三方网站的集成。它可以控制信息从你的页面传输到第三方网站的方式。其他能够识别 Open Graph 元标签的网站包括 Twitter、LinkedIn 和 Google+。你可以通过以“og:”开头的属性来识别它们。
<meta property="og:url" content="https://janowski.dev/blog/2020/04/05/Intresting-article" />
<meta property="og:title" content="Intresting Article" />
<meta property="og:image" content="https://janowski.dev/static/cover.png" />
<meta property="og:image:alt" content="A green cover image with Django logo" />
Twitter 标签
另一种类型的元标签是 Twitter 标签。
他们决定我们分享的链接在 Twitter 上如何以卡片形式显示。我们可以在这里测试
<meta name="twitter:image" content="https//example.com/image.png" />
<meta property="twitter:image:alt" content="Description of the image" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@MaciejJanowski" />
网站地图
站点地图是一个 XML 文件,它告诉搜索引擎您网站的页面、它们的相关性以及更新频率。使用站点地图可以提高您网站在搜索引擎排名中的可见度,因为站点地图可以帮助爬虫程序索引您网站的内容。
Django 自带站点地图框架,可以让我们动态生成站点地图。
要安装 Sitemap 框架,请打开[settings.py](http://settings.py)
并添加django.contrib.sites
到django.contrib.sitemaps
设置中INSTALLED_APPS
,然后为网站定义一个新的 ID。
SITE_ID = 1
INSTALLED_APPS = [
...
'django.contrib.sites',
'django.contrib.sitemaps',
]
现在为站点应用程序创建表
python manage.py migrate
在你的网站应用程序(假设是“博客”)中创建一个名为 sitemaps.py 的新文件
假设我们的“博客”应用程序中有一个名为 Post 的模型
from django.contrib.sitemaps import Sitemap
from .models import Post
class PostSitemap(Sitemap):
changefreq = "weekly"
priority = 0.9
def items(self):
return Post.objects.all()
def lastmod(self, obj):
return obj.updated
最后进入项目主urls.py,添加站点地图,如下
from django.urls import path, include
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
sitemaps = {
"posts": PostSitemap,
}
urlpatterns = [
path('blog/', include('blog.urls', namespace='blog')),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap')
]
现在打开后即可访问站点地图http://127.0.0.1:8000/sitemap.xml
您应该会看到类似这样的输出。 这只是 SEO 的皮毛,它还有更多内容。
查看下面的工具和资源,了解有关开发人员 SEO 的更多信息。
实用工具
- Lighthouse - 谷歌提供的用于计算 SEO、可访问性和其他一些关键指标得分的工具。
- Google Pagespeed Insights - 另一个 Google 工具,提供我们网站或桌面和移动设备的速度分数。
- Twitter Card Validator - 用于验证和预览 Twitter Card 的 Twitter 工具。
其他资源
- SEO新手指南
- 开发人员的最佳 SEO 实践
- Try Except Pass 第 10 集 - 搜索引擎优化研究以及开发人员应关注的原因
- Try Except Pass 第 11 集 - 搜索引擎优化研究:开发人员的 13 个基本实践