一个小应用程序,跟踪数据库表中的url更改,根据请求提供http 301&410。

django-url-tracker-forl的Python项目详细描述


https://travis-ci.org/elbaschid/django-url-tracker.pnghttps://coveralls.io/repos/elbaschid/django-url-tracker/badge.png?branch=master

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

  1. 添加中间件url_tracker.middleware.URLChangePermanentRedirectMiddlewareMIDDLEWARE_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_trackerdjango.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创建南部迁移。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过Javascript(JSON)使用Java的性能、可扩展性和安全性   调试java。朗,数学。日志被内在调用取代,为什么不是java。朗,数学。exp()?   Hibernate中的java动态表名   java找不到可接受的表示406不可接受错误   无阵列的java刽子手游戏   继承Java错误地创建了子类和超类   java如何将可更改为可编辑且不在不同的选择中?   JavaSQLite在emulator上完美地显示检索到的数据,但在实际设备/应用程序中不检索任何内容   java硬件的静态成员。具有运行现金储备的抽象类,现金始终返回到初始化的数字   java对变量的静态和非静态访问的混淆