跳转到主要内容

一个小程序,用于跟踪数据库表中URL的变化,以在请求时提供HTTP 301 & 410。

项目描述

https://img.shields.io/pypi/v/django-url-tracker-fork.svg?style=flat-square https://img.shields.io/travis/saulshanabrook/django-url-tracker.svg?style=flat-square https://img.shields.io/coveralls/saulshanabrook/django-url-tracker.svg?style=flat-square Code Health

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更改都会被记录。

提供HttpResponsePremanentRedirectHttpResponseGone的HTTP响应与flatpages中间件的处理方式相似,拦截404异常并检查所有现有的URLChangeRecords中是否有请求的URL。根据记录的数据,返回相应的HTTP响应或当找不到匹配请求的URL时引发404

安装

安装非常简单

pip install django-url-tracker-fork

完成!

配置

要在项目中使用url_tracker,只需将以下两行添加到您的settings.py

  1. 将中间件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',
    )
  2. 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 (8.4 kB 查看哈希值)

上传时间 源代码

支持