Skip to main content

DSL for Django

Project description

django-dsl

Licence Version

Requirements

  • PLY
  • Django

Installation

pip install django-domain-specific-language

Usage

Allows you to search by specifying the name of the column of the database.

Characters allowed:

  • Key (column name) : A-Za-z0-9_.
  • Value : all except ')' '(' and white space.

Query Parser Syntax:

  • Wildcard Searches: *

    • *test : All that ends by test
    • test* : All that starts by test
    • *test* : All that contains test
    • \*test\* : All equal to *test*
    • \*test* : All that starts by *test
    • *test\* : All that ends by test*
  • Regex Searches: ~

    • ~\W+ : Matches any character which is not a word character.
    • \~test : Matches all equal to ~test.
  • Boolean Operators: AND OR NOT

  • Grouping: ( )

  • Date and number Searches (operators: < > <= >=) :

    • key>2 : All greater than 2
    • key<=2 : All less than or equal to 2
    • key>2018-05-04 : All greater than 2018-05-04
    • key<=2018-05-04 : All less than or equal to 2018-05-04
  • Date Range Searches (inclusive) (which correspond to SQL queries of BETWEEN):

    • key:2018-05-04_2018-05-05
  • Null Searches (which correspond to SQL queries of IS NULL and IS NOT NULL):

    • key:True
    • key:False

Example

Your database:

DB image

The possible researches:

  • Country:India AND Product:Ice-cream
  • Country:*a* AND NOT Product:~.*e$

In your code:

from django_dsl.run import compile_expr
query = compile_expr(request.GET['expression'])
cls.objects.filter(query)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-domain-specific-language-1.2.6.tar.gz (17.7 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page