跳转到主要内容

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

项目描述

https://travis-ci.org/elbaschid/django-url-tracker.png

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

完成!

配置

要在您的项目中开始使用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添加到您的INSTALLED_APPS

    INSTALLED_APPS = (
         "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是从name自动填充的。然而,还需要一个东西,让跟踪器能够工作,那就是get_absolute_url方法。让我们把这个添加到模型中

class Project(models.Model):
    ...

    @models.permalink
    def get_absolute_url(self):
        return ('project-detail', (), {'slug': self.slug})

现在,为了实际开始跟踪URL更改,需要在类定义的底部或相应文件中添加以下命令

import url_tracker
url_tracker.track_url_changes_for_model(Project)

您已完成。如果您进入管理界面,创建一个新的项目,然后更改其slug(这将更改其URL),您将看到一个反映更改的新的URLChangeRecord。打开old_url应将其重定向到new_url

贡献

如果您发现问题或希望看到支持的功能,请转到问题部分并报告。

要以任何形式贡献代码,请fork github存储库并将其克隆到本地。为您的功能创建一个新的分支

git commit -b feature/whatever-you-like

将完成的功能推送到github,并从分支打开一个pull请求。

项目详情


下载文件

下载适用于您平台的项目文件。如果您不确定要选择哪个,请了解安装包的更多信息。

源分发

django-url-tracker-0.1.3.tar.gz (15.0 kB 查看哈希值)

上传时间

由以下支持