Modular search for Django

Overview

Haystack

Author: Daniel Lindsley
Date: 2013/07/28

Haystack provides modular search for Django. It features a unified, familiar API that allows you to plug in different search backends (such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify your code.

Haystack is BSD licensed, plays nicely with third-party app without needing to modify the source and supports advanced features like faceting, More Like This, highlighting, spatial search and spelling suggestions.

You can find more information at http://haystacksearch.org/.

Getting Help

There is a mailing list (http://groups.google.com/group/django-haystack/) available for general discussion and an IRC channel (#haystack on irc.freenode.net).

Documentation

See the changelog

Build Status

https://travis-ci.org/django-haystack/django-haystack.svg?branch=master

Requirements

Haystack has a relatively easily-met set of requirements.

Additionally, each backend has its own requirements. You should refer to https://django-haystack.readthedocs.io/en/latest/installing_search_engines.html for more details.

Comments
  • django_ct error with Solr 5.5.4/6.4.1 and Haystack 2.6.0

    django_ct error with Solr 5.5.4/6.4.1 and Haystack 2.6.0

    • [x] Tested with the latest Haystack release
    • [ ] Tested with the current Haystack master branch

    Expected behavior

    Haystack responds as expected (with an appropriate JSON response) and is able to be queried using a Solr backend

    Actual behavior

    500 Internal Server Error: KeyError: 'django_ct'

    Steps to reproduce the behavior

    1. Create Django project and add a model
    2. You can try using the build_solr_schema command, but that produces an output incompatible (deprecated field types) with both Solr 6.4.1 and Solr 5.5.4 (so I basically have been trying to use this for the schema. I have tried using the schema output from both cases mentioned in both Solr 6.4.1 and Solr 5.5.4 but have not had any luck.
    3. I have ensured the django_id and django_ct are defined as fields but that does not seem to be the issue here.

    I suppose my main question to the community is whether or not anyone has gotten Haystack working with Solr 5.5.4 or Solr 6.4.1? I don't feel we should have to downgrade Solr any further due to lack of new features and for security reasons. Currently in our Django application we are using PySolr directly to query Solr and return JSON. Thanks for your time!

    Configuration

    • Operating system version: Ubuntu 16.04.2 LTS
    • Search engine version: Solr 6.4.1 and Solr 5.5.4
    • Python version: 3.5.2
    • Django version: 1.10.5
    • Haystack version: 2.6.0
    opened by elitzer2 51
  •  Add ElasticSearch 5.0 support

    Add ElasticSearch 5.0 support

    elasticsearch 5.0 is in alpha already and should be added on future release of haystack. Maybe skipping ealsticsearch 2.0 support would be an option. elasticsearch-py already supports elasticsearch 5.0

    https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-5.0.html

    feature backend : elasticsearch decision needed 
    opened by JanMalte 44
  • Solr 5 support

    Solr 5 support

    Continuing and finishing PR #1148 after @acdha comment https://github.com/django-haystack/django-haystack/pull/1148#issuecomment-172620864

    Test coverage seems good as well as Travis builds. Rebase from master is freshly done

    Thanks for considering merging it.


    This change is Reviewable

    highpriority backend : solr dependency updates 
    opened by elishowk 37
  • LookupError with Django 1.7 and an app without models.py

    LookupError with Django 1.7 and an app without models.py

    I'm in the process of upgrading a project to Django 1.7. Rebuilding or updating the haystack index fails in combination with django-grappelli's dashboard. Please note, that in latest grappelli, the dashboard module/app doesn't have a models.py (which is allowed in Django 1.7 as far as i understand).

    $ ./manage.py rebuild_index
    
    WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
    Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
    Are you sure you wish to continue? [y/N] y
    Removing all documents from your index because you said so.
    All documents removed.
    ERROR:root:Error updating grappelli.dashboard using default 
    Traceback (most recent call last):
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 189, in handle_label
        self.update_backend(label, using)
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 203, in update_backend
        for model in get_models(label):
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/utils/app_loading.py", line 41, in get_models
        return [apps.get_app_config(app_label).get_model(model_name)]
    File "/path/to/env/local/lib/python2.7/site-packages/django/apps/config.py", line 166, in get_model
        "App '%s' doesn't have a '%s' model." % (self.label, model_name))
    LookupError: App 'grappelli' doesn't have a 'dashboard' model.
    Traceback (most recent call last):
    File "./manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
        self.execute(*args, **options.__dict__)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
        output = self.handle(*args, **options)
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/rebuild_index.py", line 16, in handle
        call_command('update_index', **options)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 115, in call_command
        return klass.execute(*args, **defaults)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
        output = self.handle(*args, **options)
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 184, in handle
        return super(Command, self).handle(*items, **options)
    File "/path/to/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 503, in handle
        label_output = self.handle_label(label, **options)
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 189, in handle_label
        self.update_backend(label, using)
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 203, in update_backend
        for model in get_models(label):
    File "/path/to/env/local/lib/python2.7/site-packages/haystack/utils/app_loading.py", line 41, in get_models
        return [apps.get_app_config(app_label).get_model(model_name)]
    File "/path/to/env/local/lib/python2.7/site-packages/django/apps/config.py", line 166, in get_model
        "App '%s' doesn't have a '%s' model." % (self.label, model_name))
    LookupError: App 'grappelli' doesn't have a 'dashboard' model.
    

    Django: 1.7.1 django-haystack: 2.3.1 django-grappelli: 2.6.2

    INSTALLED_APPS = (
        'grappelli.dashboard',
        'grappelli',
        # ...
        'haystack',
    )
    

    The management command works when 'grappelli.dashboard' is removed from INSTALLED_APPS.

    bug highpriority 
    opened by deschler 37
  • Support for Elasticsearch 5.x

    Support for Elasticsearch 5.x

    Based on #1460 - will be properly rebased once it's accepted.

    So far only two features seem to be failing, according to the test suite:

    • Faceted search (ES seems to throw an error about fielddata)
    • Autocomplete

    Any help to solve any of those would be appreciated.

    opened by ElSaico 35
  • Added generic class based search views

    Added generic class based search views

    This addresses the need for django-haystack's django style class based views. This is based on the discussion from the following PR:

    • https://github.com/toastdriven/django-haystack/pull/826

    This work was originally done by @bennylope with only minor changes from his original file:

    • https://github.com/bennylope/elasticstack/blob/master/elasticstack/views.py

    This PR addresses the following issues:

    • Fixes #348
    • Fixes #350
    • Fixes #873
    • Resolves #826
    • Resolves #1131
    • Fixes many tests that were previously broken prior to this PR
    opened by troygrosfield 31
  • Django 2.0 compatibility

    Django 2.0 compatibility

    Hi, this PR adds Django 2.0 compatibility. As the PR https://github.com/django-haystack/django-haystack/pull/1557 did not see any progress recently I implemented everything needed for Django 2.0 compatibility here.

    In particular I rewrote the rebuild_index command to strip certain arguments that are not used in the clear_index and update_index commands respectively. This is implemented in a relatively adhoc way, however looking at the amount of changes made to rebuild_index in the past I figured this might be the easiest way to implement this change.

    Additionally I added Django 2.0 to the tests and excluded the combination Django2.0 + Python2.7 from the test suite so that the tests still pass. Maybe one should also consider adding python 3.6 to the test suite, however I did not do that yet.

    Also note the change I made to test_haystack/solr_tests/test_solr_backend.py. This was necessary due to the recent update in pysolr. That update broke the django-haystack tests, as pysolr.__version__ is now a string instead of a tuple. The fix I implemented should be backwards compatible.

    Please let me know if there is anything this MR needs to get merged, cheers, Martin

    opened by mpauly 26
  • Solr6 template upgrade

    Solr6 template upgrade

    This is the Major upgrade addressing #1502 and started in #1488 to handle Solr6 (specifically 6.4 and 6.5). It adds new command parameters to build_solr_schema. The two new options allow you to specify a directory to put the config files in, and to automatically reload the core. This involved putting a new HAYSTACK_CONNECTIONS variable in place 'ADMIN_URL'.

    One major change was that the template got renamed to schema.xml in the template directory instead of solr,xml

    Along the way spelling suggestions format parsing was updated and handled (though the legacy style of returning only one suggestion was maintained -- we now have the plumbing to supply multiple). Upgrades were made to the tests to test spelling suggestion without collation to improve code coverage.

    Upgrades were also made to handle django 11 by fixing the context passing to be native dicts in the main code base and the tests.

    PEP8 changes were made, though not exhaustively.

    Updated the Travis config to only use Trusty images as the others didn't have access to Oracle8 which was also required for newer Solr. Expanded test matrix to handle Django 1.11

    TBD: Upgrade haystack to handle multiple spelling suggestions for Solr Something about ExtendedCollation from @acdha's other comments Expand matrix to handle multiple Solr versions (don't know what a reasonable anchor version is) probably many more:)

    opened by RabidCicada 24
  • ElasticSearch 2.0 support

    ElasticSearch 2.0 support

    Gives haystack support for Elasticsearch 2.x

    • Adds a new backend haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine
    • Reuses the code and tests for ES 1.x
    • Changes facets (aggregations on ES 2.x)
    • Changes delete_by_query (scroll API and bulk actions)
    • "more like this" (More Like This Query)
    • Modifies the dependecy on elasticsearch library version

    Issue: https://github.com/django-haystack/django-haystack/issues/1247

    highpriority needs review backend : elasticsearch 
    opened by PedroAquilino 24
  • Adaptations for Solr 5.0.0

    Adaptations for Solr 5.0.0

    Solr 5.0.0 is easy to deploy with cloud Cores with automatic managed-schema and no more schem.xml. Solr 5.0.0 can edit a core's configuration via with the Schema REST API. This is what this pull request does. Along with an updated documentation.

    Refers to issue #1147 and try to resolve it...

    backend : solr needs review 
    opened by elishowk 22
  • WIP: Django 1.9 updates and fixes

    WIP: Django 1.9 updates and fixes

    Remove django.conf.urls.patterns, since they already have been removed from the doc and will be removed in Django 2.0

    This removes in Django 1.9 the warning:

    RemovedInDjango110Warning: django.conf.urls.patterns()
    is deprecated and will be removed in Django 1.10. Update your urlpatterns to be a list of
    django.conf.urls.url() instances instead.
      name='redactor_upload_file'),
    

    Also Updates the command update_index to match new arguments parser in Django

    needs review 
    opened by mariocesar 20
  • AWS open search compatibility (should be quick to fix)

    AWS open search compatibility (should be quick to fix)

    • [ X] Tested with the current Haystack master branch

    Expected behaviour

    index is built

    Actual behaviour

    index is not built due to incompatibility with open search

    Steps to reproduce the behaviour

    try use AWS open search (which is elastic compatible with haystacks)

    Configuration

    • Operating system version: docker python
    • Search engine version: AWS opensearch
    • Python version: 3.10.1
    • Django version: 4.1.3
    • Haystack version: 3.2.1

    Im trying to use AWS open search with Django Haystacks, which is fully compatible (Amazon have suggested). However when I try launch "./manage.py rebuild_index" when pointing a connection at the platform I am met with the error

        Traceback (most recent call last):
          File "/data/app/myapp/./manage.py", line 22, in <module>
            execute_from_command_line(sys.argv)
          File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
            utility.execute()
          File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 440, in execute
            self.fetch_command(subcommand).run_from_argv(self.argv)
          File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 402, in run_from_argv
            self.execute(*args, **cmd_options)
          File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 448, in execute
            output = self.handle(*args, **options)
          File "/usr/local/lib/python3.10/site-packages/haystack/management/commands/rebuild_index.py", line 64, in handle
            call_command("clear_index", **clear_options)
          File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 198, in call_command
            return command.execute(*args, **defaults)
          File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 448, in execute
            output = self.handle(*args, **options)
          File "/usr/local/lib/python3.10/site-packages/haystack/management/commands/clear_index.py", line 64, in handle
            backend.clear(commit=self.commit)
          File "/usr/local/lib/python3.10/site-packages/haystack/backends/elasticsearch7_backend.py", line 117, in clear
            self.conn.indices.delete(index=self.index_name, ignore=404)
          File "/usr/local/lib/python3.10/site-packages/elasticsearch/client/utils.py", line 347, in _wrapped
            return func(*args, params=params, headers=headers, **kwargs)
          File "/usr/local/lib/python3.10/site-packages/elasticsearch/client/indices.py", line 334, in delete
            return self.transport.perform_request(
          File "/usr/local/lib/python3.10/site-packages/elasticsearch/transport.py", line 421, in perform_request
            _ProductChecker.raise_error(self._verified_elasticsearch)
          File "/usr/local/lib/python3.10/site-packages/elasticsearch/transport.py", line 638, in raise_error
            raise UnsupportedProductError(message)
        elasticsearch.exceptions.UnsupportedProductError: The client noticed that the server is not a supported distribution of Elasticsearch
    

    when we've dug into this by looking in "site-packages/elasticsearch/transport.py" and the differences between the amazon headers and an elastic search header the only differences between the two is that amazon openserach "build_flavour" in it. Build flavour is used in the check_product function from transport.py

        @classmethod
            def check_product(cls, headers, response):
                # type: (dict[str, str], dict[str, str]) -> int
                """Verifies that the server we're talking to is Elasticsearch.
                Does this by checking HTTP headers and the deserialized
                response to the 'info' API. Returns one of the states above.
                """
            try:
                version = response.get("version", {})
                version_number = tuple(
                    int(x) if x is not None else 999
                    for x in re.search(
                        r"^([0-9]+)\.([0-9]+)(?:\.([0-9]+))?", version["number"]
                    ).groups()
                )
            except (KeyError, TypeError, ValueError, AttributeError):
                # No valid 'version.number' field, effectively 0.0.0
                version = {}
                version_number = (0, 0, 0)
    
            # Check all of the fields and headers for missing/valid values.
            try:
                bad_tagline = response.get("tagline", None) != "You Know, for Search"
                bad_build_flavor = version.get("build_flavor", None) != "default"
                bad_product_header = (
                    headers.get("x-elastic-product", None) != "Elasticsearch"
                )
            except (AttributeError, TypeError):
                bad_tagline = True
                bad_build_flavor = True
                bad_product_header = True
    
            # 7.0-7.13 and there's a bad 'tagline' or unsupported 'build_flavor'
            if (7, 0, 0) <= version_number < (7, 14, 0):
                if bad_tagline:
                    return cls.UNSUPPORTED_PRODUCT
                elif bad_build_flavor:
                    return cls.UNSUPPORTED_DISTRIBUTION
    
            elif (
                # No version or version less than 6.x
                version_number < (6, 0, 0)
                # 6.x and there's a bad 'tagline'
                or ((6, 0, 0) <= version_number < (7, 0, 0) and bad_tagline)
                # 7.14+ and there's a bad 'X-Elastic-Product' HTTP header
                or ((7, 14, 0) <= version_number and bad_product_header)
            ):
                return cls.UNSUPPORTED_PRODUCT
    
            return True
    

    I commented out the build flavour checks in this function, and then the index built successfully! but ive noticed the file "elasticsearch/transport.py" and the code "def check_product" doesn't exist in this repo. I don't know where this is pulled from or how I can create a build that will comment out these lines

    Thanks

    opened by ajwillo 0
  • 1stpull

    1stpull

    Hey, thanks for contributing to Haystack. Please review the contributor guidelines and confirm that the tests pass with at least one search engine.

    Once your pull request has been submitted, the full test suite will be executed on https://github.com/django-haystack/django-haystack/actions/workflows/test.yml. Pull requests with passing tests are far more likely to be reviewed and merged.

    opened by HamLuci-byte 0
  • Relation to Deepset AI Haystack

    Relation to Deepset AI Haystack

    We are considering refactoring our enterprise search engine using NLP + Elasticsearch. Researching this topic - reading articles and watching some videos, I encountered Haystack - the solution provided by DeepsetAI. But since our backend is written in Django, I eventually came across this repository.

    So I was wondering, what is the relation between django-haystack and deepset-ai-haystack? Are they both based on the same underlying technology (like ES and Solr are based on Lucene)? Is one the fork of another?

    I'm just trying to gather as much information as possible before committing to one or the other solution.

    opened by ruslaniv 0
  • Cannot index proxy model

    Cannot index proxy model

    • [x] Tested with the latest Haystack release
    • [x] Tested with the current Haystack master branch

    Expected behaviour

    Given I have a proxy model class:

    class CustomOrder(Order):
        class Meta:
            proxy = True
    

    And an index for the parent model:

    class OrderIndex(BaseIndex):
        def get_model(self):
            return Order
    

    I would expect that instances of the proxy model class would be included in the index.

    Actual behaviour

    Instances of CustomOrder are ignored when indexing.

    Is there a way to have the CustomOrder class included in the OrderIndex so that both the CustomOrder and Order class go to the one index?

    opened by dfollent 0
  • Loss of result information in Solr range facet query

    Loss of result information in Solr range facet query

    • [X] Tested with the latest Haystack release
    • [X] Tested with the current Haystack master branch

    Expected behaviour

    When we do a range facet query with open bound option (which is for now not part of Haystack but will be available once #978 is merged), Solr may return after, before, start and end fields as well as "counts" in the result (see Solr doc). These fields should be used in the transformed result. e.g. for a raw range result of:

    {'price': {'counts': ['0.0', 0, '30.0', 0, '60.0', 0, '90.0', 0, '120.0', 0, '150.0', 3, '180.0', 1], 'gap': 30.0, 'before': 0, 'after': 5, 'between': 4, 'start': 0.0, 'end': 210.0}}
    

    we would expects haystack to return the following range result:

    {'price': [('0.0', 0), ('30.0', 0), ('60.0', 0), ('90.0', 0), ('120.0', 0), ('150.0', 3), ('180.0', 1), (210.0, 5)]}
    

    I don't see any way to represent the [* to 0] range (result given in before field) in current haystack representation, any idea?

    Actual behaviour

    "after" and "end" raw result fields are ignored

    e.g. for a raw range result of:

    {'price': {'counts': ['0.0', 0, '30.0', 0, '60.0', 0, '90.0', 0, '120.0', 0, '150.0', 3, '180.0', 1], 'gap': 30.0, 'before': 0, 'after': 5, 'between': 4, 'start': 0.0, 'end': 210.0}}
    

    we get the following:

    {'price': [('0.0', 0), ('30.0', 0), ('60.0', 0), ('90.0', 0), ('120.0', 0), ('150.0', 3), ('180.0', 1)}
    

    The fact that there is 5 results for the "210 and more" facet is lost and we even lose the fact that the last range is 180-210 and not 180+

    Steps to reproduce the behaviour

    1. Implement range faceting
    2. create range query using start, gap, end and other=after options
    3. Look at the result

    Configuration

    • Operating system version: Debian GNU/Linux 10 (buster)
    • Search engine version: Apache Solr™ version 8.8.2
    • Python version: Python 3.10.2
    • Django version: 3.2.15 / 4.0
    • Haystack version: 3.2.1
    opened by Chadys 0
Releases(v3.1.0)
  • v3.1.0(Aug 27, 2021)

    • Considerable code and CI/CD cleanup thanks to @dulmandakh, @asedeno, @Cabalist
    • Per-field configuration of Whoosh analysis by @denizdogan
    • Whoosh faceting and other improvements thanks to @asedeno
    • ElasticSearch 7 support thanks to @Surgo
    • ElasticSearch 5 .models() support thanks to @puzzlet
    • Minutes granularity for update_index management command thanks to @yeago
    • update_index fix thanks to @nikolaysm
    Source code(tar.gz)
    Source code(zip)
  • v3.0b1(Feb 13, 2020)

  • v2.7.0(Jun 15, 2018)

  • v2.4.0(Jun 5, 2015)

    New Features & Fixes

    • Django 1.8 is supported (see #1175, #1165, #1162, #1137)
    • AppConfig is fully supported for Django 1.7+ (#1152)
    • During indexing, the process method can raise haystack.exceptions.SkipDocument to skip individual records which are not be easily excluded using index_queryset
    • ElasticSearch: distance queries and compatibility changes with the elasticsearch client library have been fixed
    • The new generic_views module uses the standard Django classes to replace the older views module
    • SearchQuerySet’s narrow() method now accepts SQ instances

    Deprecations

    • Python 2.6 is no longer supported
    • Django 1.5 is no longer supported
    • The old class-based views which predated Django's CBVs have been deprecated in favor of the new generic_views module using the standard Django classes. See #1130.
    • Several undocumented spatial search methods have been removed: SearchQuerySet.order_by_distance(), and the add_spatial() and add_order_by_distance() methods on SolrSearchQuery or ElasticsearchSearchQuery. The standard order_by('distance') and other spatial query methods in the documentation are unaffected.
    • The old haystack.utils.method_decorator has been removed since all supported versions of Django have django.utils.decorator.method_decorator.
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Aug 3, 2014)

    • #951: Complete refactoring of the test suite (thanks @HonzaKral!) which makes it easier to use and faster
    • #407: Fixed doc: query is context variable and not in request
    • #413: Fixed warning when models() is called with an unregistered model
    • #775: Avoid unnecessary db query on index update
    • #795: Improve error message for duplicate index classes
    • #840, #807: Incorrect Clean input behaviour for Elasticsearch engine
    • 30afd1f Fixed a missed raw_input call on Python 3
    • #847: Fixed an update_index bug when using multiple connections
    • 1cfb6c6 Pass using to index_queryset for update
    • 4956486 Fixed simple backend for Django 1.6, _fields was removed.
    • 3ef5644 Fixed autocomplete() method with spaces in query
    • #575 & #838: fixed an incompatibility with Whoosh 2.5>
    • ab145f3 Fixed ValueError exception when SILENTLY_FAIL=True
    • #886: Use Filtered queries more efficiently for elasticsearch
    • #899: Use HTML5
    • #885: Use elasticsearch-py instead of pyelasticsearch
    • #775, #718: Fix bounding box calculation for spatial queries
    • 6d3daa6 Whoosh: allow multiple order_by() fields
    • f7d4fad131a8a195742dcabacaeb3ea4a3c0abc7 Simplified mappings for ElasticSearch fields
    • #888: run() kwargs are passed directly to search backend, fixing values_list and making subclassing easier (Solr, ElasticSearch)
    • Solr backend: correct usage of pysolr delete (#943)
    • Small docs fix for spatial search example code (#946)
    • Fix logging call in SQS post_process_results (see #648)
    • ElasticSearch: avoid KeyError for empty spelling suggestions (thanks @skoczen)
    • RelatedSearchQuerySet: move class globals to instance properties, avoiding conflicts with multiple instances
    • Update ElasticSearch for 1.0+ syntax 0043fac849dbb6cda7a4597821b27cbb7e87f9d9

    Closes #1029

    Source code(tar.gz)
    Source code(zip)
Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project

Django URL Shortener Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project Install this package to your Dja

Rishav Sinha 4 Nov 18, 2021
Py-instant-search-redis - Source code example for how to build an instant search with redis in python

py-instant-search-redis Source code example for how to build an instant search (

Giap Le 4 Feb 17, 2022
Full-text multi-table search application for Django. Easy to install and use, with good performance.

django-watson django-watson is a fast multi-model full-text search plugin for Django. It is easy to install and use, and provides high quality search

Dave Hall 1.1k Dec 22, 2022
Book search Django web project that uses requests python library and openlibrary API.

Book Search API Developer: Vladimir Vojtenko Book search Django web project that uses requests python library and openlibrary API. #requests #openlibr

null 1 Dec 8, 2021
Meta package to combine turbo-django and stimulus-django

Hotwire + Django This repository aims to help you integrate Hotwire with Django ?? Inspiration might be taken from @hotwired/hotwire-rails. We are sti

Hotwire for Django 31 Aug 9, 2022
django-reversion is an extension to the Django web framework that provides version control for model instances.

django-reversion django-reversion is an extension to the Django web framework that provides version control for model instances. Requirements Python 3

Dave Hall 2.8k Jan 2, 2023
Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application.

Django-environ django-environ allows you to use Twelve-factor methodology to configure your Django application with environment variables. import envi

Daniele Faraglia 2.7k Jan 7, 2023
Rosetta is a Django application that eases the translation process of your Django projects

Rosetta Rosetta is a Django application that facilitates the translation process of your Django projects. Because it doesn't export any models, Rosett

Marco Bonetti 909 Dec 26, 2022
Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.

Cookiecutter Django Powered by Cookiecutter, Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly. Documentati

Daniel Feldroy 10k Dec 31, 2022
Django project starter on steroids: quickly create a Django app AND generate source code for data models + REST/GraphQL APIs (the generated code is auto-linted and has 100% test coverage).

Create Django App ?? We're a Django project starter on steroids! One-line command to create a Django app with all the dependencies auto-installed AND

imagine.ai 68 Oct 19, 2022
django-quill-editor makes Quill.js easy to use on Django Forms and admin sites

django-quill-editor django-quill-editor makes Quill.js easy to use on Django Forms and admin sites No configuration required for static files! The ent

lhy 139 Dec 5, 2022
A Django chatbot that is capable of doing math and searching Chinese poet online. Developed with django, channels, celery and redis.

Django Channels Websocket Chatbot A Django chatbot that is capable of doing math and searching Chinese poet online. Developed with django, channels, c

Yunbo Shi 8 Oct 28, 2022
A handy tool for generating Django-based backend projects without coding. On the other hand, it is a code generator of the Django framework.

Django Sage Painless The django-sage-painless is a valuable package based on Django Web Framework & Django Rest Framework for high-level and rapid web

sageteam 51 Sep 15, 2022
A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a unique id.

Django-URL-Shortener A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a uni

Rohini Rao 3 Aug 8, 2021
Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot. A fully Django starter project.

Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot ?? Features A Django stater project with fully basic requirements for a production-ready

null 8 Jun 27, 2022
pytest-django allows you to test your Django project/applications with the pytest testing tool.

pytest-django allows you to test your Django project/applications with the pytest testing tool.

pytest-dev 1.1k Dec 14, 2022
APIs for a Chat app. Written with Django Rest framework and Django channels.

ChatAPI APIs for a Chat app. Written with Django Rest framework and Django channels. The documentation for the http end points can be found here This

Victor Aderibigbe 18 Sep 9, 2022
Django-MySQL extends Django's built-in MySQL and MariaDB support their specific features not available on other databases.

Django-MySQL The dolphin-pony - proof that cute + cute = double cute. Django-MySQL extends Django's built-in MySQL and MariaDB support their specific

Adam Johnson 504 Jan 4, 2023
Django-Audiofield is a simple app that allows Audio files upload, management and conversion to different audio format (mp3, wav & ogg), which also makes it easy to play audio files into your Django application.

Django-Audiofield Description: Django Audio Management Tools Maintainer: Areski Contributors: list of contributors Django-Audiofield is a simple app t

Areski Belaid 167 Nov 10, 2022