一个小应用程序,跟踪数据库表中的url更改,根据请求提供http 301&410。
django-url-tracker的Python项目详细描述
django-url-tracker是一个易于使用的 一个加强其搜索引擎优化的网站。这似乎有点毫无意义 作为Cool URIs don’t change。我不想争论 有了它而不更改url应该是主要目标。万一, 由于某种原因更改了url,但是这可能会在 搜索引擎优化作为搜索引擎不喜欢结束在404 爬网已知URL时的页面。很好地处理这些情况 django-url-tracker跟踪url的更改以及old url被称为提供永久重定向(http 301)或gone 已删除URL的响应(HTTP 410)。
跟踪是针对那些基于 模型字段,例如aslug字段。开始跟踪URL更改 对于特定的模型,您只需注册该模型 使用url_tracker,每次更改或删除模型时, 记录URL更改。
提供^{tt4}的http repsons$ 或者HttpResponseGone的处理方式类似于flatpages 中间件,拦截404异常并检查 所有现有的{TT8} $中的请求URL。依靠 在记录的数据上,相应的http响应是return或 当没有与请求的url匹配的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,它保存这个特定项目的详细信息,并且 在url http://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。
贡献
如果您发现问题或希望看到支持的功能,请转到 然后报告。
要以任何形式贡献代码,请分叉github repository:并在本地克隆它。 为您的功能创建新分支:
git commit -b feature/whatever-you-like
将完成的功能推送到github,并从分支中打开一个pull请求。