一个小应用程序,跟踪数据库表中的url更改,根据请求提供http 301&410。
django-url-tracker-forl的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-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,它保存这个特定项目的详细信息 在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的更改。添加 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。
贡献
如果您发现问题或希望看到支持的功能,请转到 然后报告。
要以任何形式贡献代码,请分叉github repository:并在本地克隆它。 为您的功能创建新分支:
git commit -b feature/whatever-you-like
然后确保所有测试都通过(并为任何新功能编写新的测试):
./run_tests.py
将完成的功能推送到github,并从分支中打开一个pull请求。
如果对models.py进行了需要数据库迁移的更改, 使用django-mini.py-p-a url_tracker -a south -a django.contrib.contenttypes schemamigration url_tracker --auto创建南部迁移。