Modular search for Django

Related tags

Djangodjango-haystack
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)
Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes

Bleach Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes. Bleach can also linkify text safely, appl

Mozilla 2.5k Dec 29, 2022
E-Commerce Platform

Shuup Shuup is an Open Source E-Commerce Platform based on Django and Python. https://shuup.com/ Copyright Copyright (c) 2012-2021 by Shuup Commerce I

Shuup 2k Jan 07, 2023
Faker is a Python package that generates fake data for you.

Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in yo

Daniele Faraglia 15.2k Jan 01, 2023
Hotwired/Turbo Django response helpers

This package provides helpers for server-side rendering of Hotwired/Turbo streams and frames. Disclaimer: the Hotwired/Turbo client libraries are, at

Hotwire for Django 66 Apr 07, 2022
A fresh approach to autocomplete implementations, specially for Django.

A fresh approach to autocomplete implementations, specially for Django. Status: v3 stable, 2.x.x stable, 1.x.x deprecated. Please DO regularely ping us with your link at #yourlabs IRC channel

YourLabs 1.6k Dec 22, 2022
GeoDjango provides geospatial extensions to the Django web dev framework

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. All documentation is in the "docs" directo

Paul Smith 20 Sep 20, 2022
Django API that scrapes and provides the last news of the city of Carlos Casares by semantic way (RDF format).

"Casares News" API Api that scrapes and provides the last news of the city of Carlos Casares by semantic way (RDF format). Usage Consume the articles

Andrés Milla 6 May 12, 2022
Hello world written in Django.

Learning Django 💡 create a virtual environment create python -m venv ./venv. this virtualenv file will be excluded by .gitignore activate the virtual

Dipak giri 4 Nov 26, 2021
A slick ORM cache with automatic granular event-driven invalidation.

Cacheops A slick app that supports automatic or manual queryset caching and automatic granular event-driven invalidation. It uses redis as backend for

Alexander Schepanovski 1.7k Jan 03, 2023
Yet another Django audit log app, hopefully the simplest one.

django-easy-audit Yet another Django audit log app, hopefully the easiest one. This app allows you to keep track of every action taken by your users.

Natán 510 Jan 02, 2023
Built from scratch to replicate some of the Django admin functionality and add some more, to serve as an introspective interface for Django and Mongo.

django-mongonaut Info: An introspective interface for Django and MongoDB. Version: 0.2.21 Maintainer: Jazzband (jazzband.co) This Project is Being Mov

Jazzband 238 Dec 26, 2022
Automatic class scheduler for Texas A&M written with Python+Django and React+Typescript

Rev Registration Description Rev Registration is an automatic class scheduler for Texas A&M, aimed at easing the process of course registration by gen

Aggie Coding Club 21 Nov 15, 2022
Phoenix LiveView but for Django

Reactor, a LiveView library for Django Reactor enables you to do something similar to Phoenix framework LiveView using Django Channels. What's in the

Eddy Ernesto del Valle Pino 526 Jan 02, 2023
The uncompromising Python code formatter

The Uncompromising Code Formatter “Any color you like.” Black is the uncompromising Python code formatter. By using it, you agree to cede control over

Python Software Foundation 30.7k Jan 03, 2023
Returns unicode slugs

Python Slugify A Python slugify application that handles unicode. Overview Best attempt to create slugs from unicode strings while keeping it DRY. Not

Val Neekman (AvidCoder) 1.3k Dec 23, 2022
Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app.

django-permissions-policy Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app. Requirements Python 3.

Adam Johnson 78 Jan 02, 2023
Django's class-based generic views are awesome, let's have more of them.

Django Extra Views - The missing class-based generic views for Django Django-extra-views is a Django package which introduces additional class-based v

Andy Ingram 1.3k Jan 04, 2023
Django Starter is a simple Skeleton to start with a Django project.

Django Starter Template Description Django Starter is a simple Skeleton to start

Numan Ibn Mazid 1 Jan 10, 2022
Developer-friendly asynchrony for Django

Django Channels Channels augments Django to bring WebSocket, long-poll HTTP, task offloading and other async support to your code, using familiar Djan

Django 5.5k Jan 06, 2023
Neighbourhood - A python-django web app to help the residence of a given neighborhood know their surrounding better

Neighbourhood A python-django web app to help the residence of a given neighborh

Levy Omolo 4 Aug 25, 2022