Utility for working with recurring dates in Django.

Overview

django-recurrence

Build Status

django-recurrence is a utility for working with recurring dates in Django. Documentation is available at https://django-recurrence.readthedocs.org/.

It provides:

  • Recurrence/Rule objects using a subset of rfc2445 (wraps dateutil.rrule) for specifying recurring date/times;
  • RecurrenceField for storing recurring datetimes in the database;
  • JavaScript widget.

RecurrenceField provides a Django model field which serializes recurrence information for storage in the database.

For example - say you were storing information about a university course in your app. You could use a model like this:

import recurrence.fields

class Course(models.Model):
    title = models.CharField(max_length=200)
    start = models.TimeField()
    end = models.TimeField()
    recurrences = recurrence.fields.RecurrenceField()

You'll notice that I'm storing my own start and end time. The recurrence field only deals with recurrences not with specific time information. I have an event that starts at 2pm. Its recurrences would be "every Friday". For this to work, you'll need to put the recurrence application into your INSTALLED_APPS

Running the tests

Our test coverage is currently fairly poor (we're working on it!), but you can run the tests by making sure you've got the test requirements installed:

pip install -r requirements_test.txt

Once you've done that, you can run the tests using:

make test

You can generate a coverage report by running:

make coverage

You can run tests on multiple versions of Python and Django by installing tox (pip install tox) and running:

tox
Comments
  • Flexible handling of dtstart incl. documentation

    Flexible handling of dtstart incl. documentation

    As stated by @jpulec in #90 dtstart is handled according to RFC 2445 so that it always counts as the first occurrence regardless of your pattern, like when used with between(). This causes confusion for some users (e.g. #36, #50, #71) because it is in conflict with how dateutil.rrule handles dtstart.

    With this pull request I suggest a solution which consists of:

    1. The addition of an optional parameter include_dtstart which can be either passed to a RecurrenceField or a Recurrence instance. With include_dtstart=False the default behavior does not occur for the field/object so that dtstart no longer finds its way into the occurrence list if it does not match your recurrence pattern. Because the default behavior doesn't change if include_dtstart is not specified backward compatibility is ensured.

    2. A clear documentation of how django-recurrence handles dtstart and how it can be controlled with the feature described above. In that way further confusion should be prevented.

    3. Some additional unit test cases.

    Enhancement Changes Needed 
    opened by denisiko 21
  • Widget js is raising errors

    Widget js is raising errors

    Using the minimal Course model from the docs, I've created the following template, and a suitable create view and model form to match:

    <!DOCTYPE html>
    <html lang="en_US">
    <head>
      {{ form.media }}
    </head>
    
    <body>
      <h1>Create Course</h1>
    
      <form action="" method="post">{% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Submit" />
      </form>
    </body>
    </html>
    

    However, when actually accessing this view, I see these three errors show up in Firebug, and the recurrence field is rendered as just a plain text input.

    ReferenceError: django is not defined
        if (!django.catalog) {
    ReferenceError: gettext is not defined
        'inclusion': gettext('including'), 'exclusion': gettext('excluding')
    TypeError: recurrence.display.labels is undefined
        recurrence.display.labels.add_rule, {
    

    This is using django-recurrence==1.0.3, pip installed from PyPI.

    opened by jbradberry 19
  • How Does this Library Handle dtstart?

    How Does this Library Handle dtstart?

    It isn't stated clearly in the docs anywhere, and it seems like there are conflicting opinions in both how this library handles dtstart. In the docstrings for base.py and Recurrence it does seem to indicate that dtstart is handled the according the RFC 2445, which uses it as both the starting point for recurrences and as the first recurrence returned.

    This is in contrast to how dateutil.rrule handles it, which just uses dtstart as the starting point for recurrences and does not automatically add it as the first occurrence.

    It looks like this can be a bit of a pain point for users. #50 #36

    Should this be better documented somewhere, to explicitly state that it doesn't follow the way dateutil.rrule handles dtstart and follows more closely to the spec. Or should changing the behavior be considered since it appears to cause issues? I recognize that this would be a big change.

    opened by jpulec 15
  • change default dtstart to midnight and annual/bymonth recurrence to DAILY

    change default dtstart to midnight and annual/bymonth recurrence to DAILY

    Not sure what you think of these changes.

    The first commit makes it easier to test rulesets for a particular date by specifying the default time as (0,0) (instead of whatever now() was when the rule was created).

    The second commit makes it possible to test whether a datetime exists within an annual recurrence when only the month (but not a specific day of the month) is selected. I think this is more transparent to the user, since otherwise the particular date of the recurrence on a given month is hidden.

    Review on Reviewable

    opened by yekibud 14
  • Add start date in a rule in admin widget

    Add start date in a rule in admin widget

    Hi,

    i want to set event recurrences in the admin widget with a start date but i dont find how to do this, start date of my rules automatically take a datetime.now()

    from datetime import datetime
    import recurrence
    
    
    myrule = recurrence.Rule(
        recurrence.DAILY
    )
    
    pattern = recurrence.Recurrence(
        dtstart=datetime(2015, 10, 2, 0, 0, 0),
        dtend=datetime(2015, 10, 9, 0, 0, 0),
        rrules=[myrule, ]
    )
    

    It thats i want, i got an event started a 2october with daily recurences to 9 october, i check to python dateutil and its easy to do this directly with it too. In your app i really enjoy the admin widget, my users can easy enter complex recursive events with it, but if they can't set a start date will difficult.

    in recurrence.fields we can see this : " Field that stores a recurrence.base.Recurrence object to the database."

    Ok i go in base.Recurrence i see this :

    `dtstart` : datetime.datetime
            Optionally specify the first occurrence. This defaults to
            `datetime.datetime.now()` when the occurrence set is
            generated.
    

    Im in this case, it generate me an automatic start date.

    In recurrences.forms.RecurrenceField :

    `accept_dtstart` : bool
                Whether to accept a dtstart value passed in the input.
    

    Im really confuse, how to set a dtstart in the input?

    Thanks for your help

    opened by V1ce 13
  • Recurrence only working in Admin but buttons don't do anything when I use it in Model Form

    Recurrence only working in Admin but buttons don't do anything when I use it in Model Form

    Django admin has been fully functional with the package. However, when I tried to integrate it into a model form, the buttons don't do anything when I click them... Any help on this would be great because I've been stuck on this issue for days now with no luck!

    opened by wolfhound115 12
  • Fix timezone problems in django admin widget

    Fix timezone problems in django admin widget

    tl;dr: I think it fixes the problem that #71 is trying to address, but in a simpler and more idiomatic way.

    What is the problem?

    My browser is in timezone GMT+2. If I select the 15th of October in the widget, the Javascript in the current implementation will create the following datetime object:

    2017-10-15T00:00+02:00

    This is midnight in my timezone, but in UTC, this is actually still 10pm on the 14th! Now, somewhere on the way to the django database, the timezone information gets stripped away and what is stored is the time in UTC, without saying that it is UTC:

    2017-10-14T22:00

    Clearly, this is a bug because we are on the wrong date: 14th of October instead of 15th.

    As far as I can see convention of this library appears to be that we store the timezone-agnostic date by storing a timezone-agnostic datetime with the time set to midnight. This result is clearly violating this convention.

    How does this PR fix this?

    This PR fixes it by making sure that the widget creates the following datetime object instead:

    2017-10-15T02:00+02:00

    This is 2 am in my timezone, but in UTC, this is actually midnight

    So, when the timezone information gets stripped during form submission, the resulting timezone-agnostic datetime that ends up in the database is

    2017-10-15:00:00

    The 15th is the date that the user clicked. Since we are operating timezone-agnostic, this is all we can ask for. Happy end :)

    opened by KonstantinSchubert 10
  • Fixes #87

    Fixes #87

    This is my attempt at fixing this long-standing issue. It works for my needs without issues so far. I've utilized MutationObserver for observing DOM node additions. And replaced Django render method with a javascript initialization instead.

    opened by pasevin 9
  • Declare dependency on the admin's jQuery.js

    Declare dependency on the admin's jQuery.js

    Without this change, the admin loads recurrence-widget.init.js before jquery.init.js. As a consequence, the django.jQuery variable isn't created yet and the following error happens:

    Uncaught TypeError: django.jQuery is not a function at recurrence-widget.init.js:1
    

    With this change, the admin loads JS scripts in the correct order.

    Refs #142.

    opened by aaugustin 8
  • Will there be any support for django 2.2 and above?

    Will there be any support for django 2.2 and above?

    Do you plan on any updates so that current versions of django will be supported? I have been trying and hoping to get this to work with 2.2 and just re-read the documentation to find this...

    Currently, django-recurrence supports Python 2.7, Python 3.3, Python 3.4 and Python 3.5.
    
    django-recurrence works with Django from versions 1.7 to 1.11.
    

    It appears that {{form.media}} is loading enough to create the textarea but that is it.

    Screenshot from 2019-06-18 18-30-28

    Screenshot from 2019-06-18 18-31-56

    opened by apowell656 8
  • Passing a null value to RecurrenceField will cause a TypeError

    Passing a null value to RecurrenceField will cause a TypeError

    At this point in the code https://github.com/django-recurrence/django-recurrence/blob/master/recurrence/forms.py#L147 if the value you passed is None it will throw a TypeError, saying it expected a string or a buffer. Maybe a check should be done, if value is None then value = '' the empty string

    opened by audiolion 8
  • Bump sphinx from 4.3.2 to 6.1.1

    Bump sphinx from 4.3.2 to 6.1.1

    Bumps sphinx from 4.3.2 to 6.1.1.

    Release notes

    Sourced from sphinx's releases.

    v6.1.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.1.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0b2

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0b1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.3.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.3

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.2

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.1.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.1.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.0.2

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.0.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.0.0

    No release notes provided.

    v5.0.0b1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    ... (truncated)

    Changelog

    Sourced from sphinx's changelog.

    Release 6.1.1 (released Jan 05, 2023)

    Bugs fixed

    • #11091: Fix util.nodes.apply_source_workaround for literal_block nodes with no source information in the node or the node's parents.

    Release 6.1.0 (released Jan 05, 2023)

    Dependencies

    Incompatible changes

    • #10979: gettext: Removed support for pluralisation in get_translation. This was unused and complicated other changes to sphinx.locale.

    Deprecated

    • sphinx.util functions:

      • Renamed sphinx.util.typing.stringify() to sphinx.util.typing.stringify_annotation()
      • Moved sphinx.util.xmlname_checker() to sphinx.builders.epub3._XML_NAME_PATTERN

      Moved to sphinx.util.display:

      • sphinx.util.status_iterator
      • sphinx.util.display_chunk
      • sphinx.util.SkipProgressMessage
      • sphinx.util.progress_message

      Moved to sphinx.util.http_date:

      • sphinx.util.epoch_to_rfc1123
      • sphinx.util.rfc1123_to_epoch

      Moved to sphinx.util.exceptions:

      • sphinx.util.save_traceback

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump tox from 3.25.1 to 4.2.4

    Bump tox from 3.25.1 to 4.2.4

    Bumps tox from 3.25.1 to 4.2.4.

    Release notes

    Sourced from tox's releases.

    4.2.4

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.2.3...4.2.4

    4.2.3

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.2.2...4.2.3

    4.2.2

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.2.1...4.2.2

    4.2.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/tox-dev/tox/compare/4.2.0...4.2.1

    4.2.0

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.1.3...4.2.0

    4.1.3

    What's Changed

    ... (truncated)

    Changelog

    Sourced from tox's changelog.

    v4.2.4 (2023-01-05)

    Bugfixes - 4.2.4

    - Setting ``[testenv] basepython = python3`` will no longer override the Python interpreter version requested by a factor,
      such as ``py311`` - by :user:`stephenfin`. (:issue:`2754`)
    - Also accept tab after colon before factor filter expansion - by :user:`pdecat`. (:issue:`2823`)
    

    v4.2.3 (2023-01-04)

    Bugfixes - 4.2.3

    • devenv does not respect the specified path when the package is a wheel file - by :user:gaborbernat. (:issue:2815)
    • Require space after colon before factor filter expansion, unless it is the last character of the line - by :user:pdecat. (:issue:2822)

    v4.2.2 (2023-01-04)

    Bugfixes - 4.2.2

    - Add ``CC``, ``CFLAGS``, ``CCSHARED``, ``CXX``, ``CPPFLAGS``, ``LDFLAGS``, ``PKG_CONFIG`` and ``PKG_CONFIG_SYSROOT_DIR``
      to the default passed through environment variables list as these are needed for building various C-extensions
      - by :user:`gaborbernat`. (:issue:`2818`)
    

    v4.2.1 (2023-01-03)

    Bugfixes - 4.2.1

    • Fix extracting extras from markers with more than 2 extras in an or chain - by :user:dconathan. (:issue:2791)

    v4.2.0 (2023-01-03)

    Features - 4.2.0

    - Packaging environments now inherit from the ``pkgenv`` section, allowing to set all your packaging options in one place,
      and support the ``deps`` key to set additional dependencies that will be installed after ``pyproject.toml`` static
      ``requires`` but before backends dynamic requires - by :user:`gaborbernat`. (:issue:`2543`)
    

    Improved Documentation - 4.2.0

    • Document breaking changes with tox 4 and packaging environments - by :user:gaborbernat. (:issue:2543)
    • Document how to handle environments whose names match tox subcommands - by :user:sirosen. (:issue:2728)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Remove use of deprecated ‘distutils’ library

    Remove use of deprecated ‘distutils’ library

    Python versions from 3.10 onward deprecate use of ‘distutils’ (in PEP 632), and it will be removed from Python 3.12.

    This project should remove the option for ‘distutils’, and commit to use only the recommended ‘setuptools’ for building the package.

    opened by bignose-debian 1
  • Saving in 'UTC' problem with DST

    Saving in 'UTC' problem with DST

        I don't know if #191 solves the problem.
    

    Imagine this: server timezone is 'UTC', and user's timezone is 'Europe/Berlin' (+01:00 or +02:00 depending on the time of the year). Let's say user needs daily occurrences between 29.10. and 2.11. at 16:00h. User is creating a recurrence on 26.10. when his timezone is +02:00 compared to UTC. Current implementation will save dtstart as 14:00 UTC. And as result user would get next occurrences: 2022-10-29 14:00 UTC => 2022-10-17 16h Europe/Berlin (+02:00) 2022-10-30 14:00 UTC => 2022-10-17 16h Europe/Berlin (+02:00) 2022-11-01 14:00 UTC => 2022-10-17 15h Europe/Berlin (+01:00) 2022-11-02 14:00 UTC => 2022-10-17 15h Europe/Berlin (+01:00)

    Because once the time is converted to UTC we don't know which time user wanted.

    https://webis.helpshift.com/hc/en/3-pocket-informant/faq/177-recurring-events-and-daylight-saving-time-1634048685/

    it should follow rule of the "creation" time zone, not server/UTC timezone,

    Originally posted by @bonokl in https://github.com/jazzband/django-recurrence/issues/174#issuecomment-1325149005

    one of the possible ideas can be some kind of setting attribute where user can decide whether to save all data as UTC or as it is

    opened by bonokl 0
  • Bump flake8 from 4.0.1 to 6.0.0

    Bump flake8 from 4.0.1 to 6.0.0

    Bumps flake8 from 4.0.1 to 6.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump pytest-sugar from 0.9.5 to 0.9.6

    Bump pytest-sugar from 0.9.5 to 0.9.6

    Bumps pytest-sugar from 0.9.5 to 0.9.6.

    Changelog

    Sourced from pytest-sugar's changelog.

    0.9.6 (2022-11-5) ^^^^^^^^^^^^^^^^^^^

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(1.11.1)
Django models and endpoints for working with large images -- tile serving

Django Large Image Models and endpoints for working with large images in Django -- specifically geared towards geospatial tile serving. DISCLAIMER: th

Resonant GeoData 42 Dec 17, 2022
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
Helps working with singletons - things like global settings that you want to edit from the admin site.

Django Solo +---------------------------+ | | | | | \ | Django Solo helps

Sylvain Toé 726 Jan 8, 2023
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-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing

django-dashing django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project.

talPor Solutions 703 Dec 22, 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