一个小应用程序,用于跟踪数据库表中的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
完成!
配置
要在您的项目中开始使用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添加到您的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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 46cad65ae1f6f97877cb3b0f21965f147e75367aa3ccacd0fd76487e9532a644 |
|
MD5 | 792d04f0514fd493e8e07684ef63f4e2 |
|
BLAKE2b-256 | 4c36c070f377025eb6dcf126f6713586a5167c5f06e04896c54a4ff181b2f331 |