跳转到主要内容

为django应用程序提供自动完成功能

项目描述

为django应用程序提供自动完成功能

支持以下后端

  • solr

  • 数据库(使用LIKE)

  • redis(相当实验性)

使用符合典型的django registration-y模式

from django.db import models

from completion import site


class Blog(models.Model):
    title = models.CharField(max_length=255)
    pub_date = models.DateTimeField()
    content = models.TextField()
    published = models.BooleanField(default=True)

    def get_absolute_url(self):
        return reverse('blog_detail', args=[self.pk])


class BlogProvider(AutocompleteProvider):
    def get_title(self, obj):
        return obj.title

    def get_pub_date(self, obj):
        return datetime.datetime(2010, 1, 1)

    def get_data(self, obj):
        return {'stored_title': obj.title, 'url': obj.get_absolute_url()}

    def get_queryset(self):
        return self.model._default_manager.filter(published=True)


site.register(Blog, BlogProvider)

博客模型现在已准备好自动完成,但必须在返回之前将其存储

>>> from completion import site
>>> site.store_providers()
>>> site.suggest('tes')
[
    {u'stored_title': u'testing python', u'url': u'/blogs/1/'},
    {u'stored_title': u'testing python code', u'url': u'/blogs/3/'},
    {u'stored_title': u'web testing python', u'url': u'/blogs/2/'},
    {u'stored_title': u'unit tests with python', u'url': u'/blogs/4/'},
]

>>> site.suggest('testing')
[
    {u'stored_title': u'testing python', u'url': u'/blogs/1/'},
    {u'stored_title': u'testing python code', u'url': u'/blogs/3/'},
    {u'stored_title': u'web testing python', u'url': u'/blogs/2/'},
]

可以在任何时间向索引中添加或删除对象

>>> site.store_object(some_blog_instance)
>>> site.remove_object(some_other_obj)

如果您在自动完成索引中具有多种类型的对象,可以通过将“models”传递给suggest方法来限制结果为特定类型

>>> site.suggest('python', models=[Blog, Photo])

配置

AUTOCOMPLETE_BACKEND设置允许您指定用于自动完成的后端。选项包括

  • completion.backends.db_backend.DatabaseAutocomplete

  • completion.backends.redis_backend.RedisAutocomplete

  • completion.backends.solr_backend.SolrAutocomplete

配置Redis

确保您已安装Redisredis-py

将以下内容添加到您的设置文件中,其中连接字符串为<主机名>:<端口号>:<数据库名>

AUTOCOMPLETE_REDIS_CONNECTION = 'localhost:6379:0'

配置Solr

确保您已安装Solrpysolr

将以下内容添加到您的设置文件中

AUTOCOMPLETE_SOLR_CONNECTION = 'https://:8080/solr/autocomplete-core/'

此外,如果您最终使用Solr(我推荐这样做!),您需要确保您的solr模式中具有正确的字段定义。可以通过运行以下命令自动生成一个示例模式:

django-admin.py autocomplete_schema

这将在一个名为schema.xml的文件中,放在您的当前目录中。

安装

python setup.py install

completion 文件夹添加到您的 python-path

项目详情


下载文件

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

源代码分发

django-completion-0.2.1.tar.gz (15.9 kB 查看哈希值)

上传时间 源代码

由以下提供支持