一个小程序,用于跟踪数据库表中URL的变化,以在请求时提供HTTP 301 & 410。
项目描述
django-url-tracker 是一个易于使用的网站附加组件,旨在增强其SEO。这看起来可能有些无意义,因为 Cool URIs don’t change。我不想与这个观点争论,并且不改变URL应该是首要目标。但是,如果由于某种原因更改了URL,那么这可能会在SEO方面产生不良影响,因为搜索引擎不喜欢在爬取已知URL时遇到404页面。为了妥善处理这些情况,django-url-tracker 会跟踪URL的变化,并在调用旧URL时为已删除的URL提供永久重定向(HTTP 301)或已消失的响应(HTTP 410)。
跟踪的目标是那些基于模型字段的URL,例如 slug 字段。要开始跟踪特定模型的URL变化,您只需将模型注册到 url_tracker,每当模型被更改或删除时,URL更改都会被记录。
提供HttpResponsePremanentRedirect或HttpResponseGone的HTTP响应与flatpages中间件的处理方式相似,拦截404异常并检查所有现有的URLChangeRecords中是否有请求的URL。根据记录的数据,返回相应的HTTP响应或当找不到匹配请求的URL时引发404。
安装
安装非常简单
pip install django-url-tracker-fork
完成!
配置
要在项目中使用url_tracker,只需将以下两行添加到您的settings.py
将中间件url_tracker.middleware.URLChangePermanentRedirectMiddleware添加到MIDDLEWARE_CLASSES的末尾,之后应该看起来像这样
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'url_tracker.middleware.URLChangePermanentRedirectMiddleware', )
将url_tracker和默认包含的django.contrib.contenttypes添加到您的INSTALLED_APPS
INSTALLED_APPS = ( "django.contrib.contenttypes", "url_tracker", )
现在您可以在项目中使用url_tracker了。剩下的只是注册一个用于跟踪的模型。
跟踪模型
这是一个如何跟踪模型的简单示例。假设我们有一个名为Project的模型,它包含特定项目的详细信息,并在URLhttp://www.example.com/project/some-project/上可用。项目的URL基于我们模型的SlugField。模型可能看起来像这样
class Project(models.Model): name = models.CharField(max_length=20) slug = models.SlugField(max_length=20) description = models.CharField(max_length=500)
我不会详细介绍如何创建slug,因为这被认为是常规做法。所以现在我们假设slug会从name自动填充。然而,还有一个要求是跟踪器能够工作,那就是需要get_absolute_url方法。让我们把这个添加到模型中
class Project(models.Model): ... @models.permalink def get_absolute_url(self): return ('project-detail', (), {'slug': self.slug})
现在,开始实际跟踪URL变化缺失的链接。将URLTrackingMixin添加到您的模型中,并在类定义的底部(或您喜欢的文件底部)添加以下命令
import url_tracker class Project(url_tracker.URLTrackingMixin, models.Model): ... url_tracker.track_url_changes_for_model(Project)
要更改跟踪URL时调用的函数,在类中添加一个url_tracking_methods属性,它是一个要跟踪的方法名称列表。默认情况下,该列表包含get_absolute_url。
您已经完成了。如果您进入管理界面,创建一个新的项目并更改其slug(这会更改其URL),您将看到一个新的URLChangeRecord反映更改。打开old_url应该会将您重定向到new_url。
贡献
如果您发现问题或希望看到支持的功能,请转到问题部分:并报告它。
要以任何形式贡献代码,请Fork github存储库:并在本地克隆它。为您的功能创建一个新的分支
git commit -b feature/whatever-you-like
然后确保所有测试都通过(并为任何新功能编写新的测试)
docker-compose run --rm tests
将完成的功能推送到github,并从分支打开一个pull request。
项目详情
django-url-tracker-fork-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ce57ee427775231474aaed9153e794bf62bc3f35a6ba7876b2b1ff7aa1e3141 |
|
MD5 | 33fc7ffa5a53cb2a564f77a48b534364 |
|
BLAKE2b-256 | 528a9d6ffd20101712164ca2f3f4c679913e10eae3d1fa02020c79592d1f7863 |