{ "info": { "author": "Dmitriy Sintsov", "author_email": "questpc256@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "=====================\ndjango-jinja-knockout\n=====================\n\n.. _ActionsView: https://django-jinja-knockout.readthedocs.io/en/latest/viewmodels.html#ajax-actions\n.. _App.Actions: https://django-jinja-knockout.readthedocs.io/en/latest/viewmodels.html#ajax-actions\n.. _App.AjaxForm: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#simplifying-ajax-calls\n.. _App.Components: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#components\n.. _App.Dialog: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#underscore-js-templates\n.. _App.renderNestedList: https://django-jinja-knockout.readthedocs.io/en/latest/datatables.html#nested-verbose-field-names\n.. _App.routeUrl(): https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#simplifying-ajax-calls\n.. _action 'meta_list' preload: https://django-jinja-knockout.readthedocs.io/en/latest/datatables.html#meta-list-action-preload\n.. _Bootstrap 3: https://github.com/Dmitri-Sintsov/djk-bootstrap3\n.. _Bootstrap 4: https://github.com/Dmitri-Sintsov/djk-bootstrap4\n.. _bs_tabs(): https://django-jinja-knockout.readthedocs.io/en/latest/macros.html#macros-bs-tabs\n.. _celery: http://www.celeryproject.org/\n.. _ContextMiddleware: https://django-jinja-knockout.readthedocs.io/en/latest/middleware.html\n.. _custom tags: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#clientside-custom-tags\n.. _data-bind: https://knockoutjs.com/documentation/binding-syntax.html\n.. _datatables: https://django-jinja-knockout.readthedocs.io/en/latest/datatables.html\n.. _DisplayText: https://django-jinja-knockout.readthedocs.io/en/latest/widgets.html#displaytext\n.. _django-jinja-knockout python localization: https://poeditor.com/join/project/9hqQrFEdDM\n.. _django-jinja-knockout javascript localization: https://poeditor.com/join/project/049HWzP3eb\n.. _empty_form: https://docs.djangoproject.com/en/dev/topics/forms/formsets/#empty-form\n.. _FilteredRawQuerySet: https://django-jinja-knockout.readthedocs.io/en/latest/query.html#filteredrawqueryset\n.. _ForeignKeyGridWidget: https://django-jinja-knockout.readthedocs.io/en/latest/widgets.html#foreignkeygridwidget\n.. _ForeignKeyRawIdWidget: https://github.com/django/django/search?l=Python&q=ForeignKeyRawIdWidget\n.. _get_str_fields(): https://django-jinja-knockout.readthedocs.io/en/latest/datatables.html#get-str-fields\n.. _Knockout.js: http://knockoutjs.com/\n.. _KoGridView: https://django-jinja-knockout.readthedocs.io/en/latest/datatables.html\n.. _ListView: https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-display/#listview\n.. _ListSortingView: https://django-jinja-knockout.readthedocs.io/en/latest/views.html#listsortingview\n.. _ListQuerySet: https://django-jinja-knockout.readthedocs.io/en/latest/query.html#listqueryset\n.. _Jinja2: http://jinja.pocoo.org/docs/dev/\n.. _ModelForm: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform\n.. _Nested components: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#clientside-nested-components\n.. _Nested serializer: https://django-jinja-knockout.readthedocs.io/en/latest/usage.html#quickstart-serializers\n.. _prefetch_related(): https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.Prefetch\n.. _PrefillWidget: https://django-jinja-knockout.readthedocs.io/en/latest/widgets.html#id1\n.. _Renderer: https://django-jinja-knockout.readthedocs.io/en/latest/forms.html#forms-renderers\n.. _reverseq(): https://github.com/Dmitri-Sintsov/django-jinja-knockout/search?l=Python&q=reverseq&type=&utf8=%E2%9C%93\n.. _sample project: https://github.com/Dmitri-Sintsov/djk-sample\n.. _SendmailQueue: https://django-jinja-knockout.readthedocs.io/en/latest/utils_mail.html\n.. _Sparse components: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#clientside-sparse-components\n.. _template attributes merging: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#clientside-attributes-merging\n.. _tpl.resolve_cbv(): https://django-jinja-knockout.readthedocs.io/en/latest/tpl.html#url-resolution\n.. _underscore.js templates: https://django-jinja-knockout.readthedocs.io/en/latest/clientside.html#underscore-js-templates\n.. _viewmodels: https://django-jinja-knockout.readthedocs.io/en/latest/viewmodels.html\n\n.. image:: https://badge.fury.io/py/django-jinja-knockout.png\n :alt: PyPI package\n :target: https://badge.fury.io/py/django-jinja-knockout\n\n.. image:: https://circleci.com/gh/Dmitri-Sintsov/django-jinja-knockout.svg?style=shield\n :target: https://circleci.com/gh/Dmitri-Sintsov/django-jinja-knockout\n\n.. image:: https://img.shields.io/travis/Dmitri-Sintsov/django-jinja-knockout.svg?style=flat\n :target: https://travis-ci.org/Dmitri-Sintsov/django-jinja-knockout\n\n.. image:: http://www.icoph.org/img/ic-youtube.png\n :alt: Watch selenium tests recorded videos.\n :target: https://www.youtube.com/channel/UCZTrByxVSXdyW0z3e3qjTsQ\n\n.. image:: https://badges.gitter.im/django-jinja-knockout/Lobby.svg\n :alt: Join the chat at https://gitter.im/django-jinja-knockout/Lobby\n :target: https://gitter.im/django-jinja-knockout/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n.. image:: https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif\n :alt: Donate to support further development\n :target: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=EWVQRCWPUE652&source=url\n\nScreenshot of the `sample project`_:\n\n.. image:: https://raw.githubusercontent.com/wiki/Dmitri-Sintsov/djk-sample/djk_edit_inline.png\n :width: 740px\n\nMore screenshots with descriptions are available at: https://github.com/Dmitri-Sintsov/djk-sample/wiki\n\nDocumentation (in development): https://django-jinja-knockout.readthedocs.org/\n\n* Django 1.11, 2.0, 2.1, 2.2 support. Python 3.5 / 3.6 / 3.7 support.\n\nPlease contribute to the localization of the project:\n\n* `django-jinja-knockout python localization`_\n* `django-jinja-knockout javascript localization`_\n\nLocalization:\n\n* Chinese: ``goldmonkey``\n* Dutch: ``Melvyn Sopacua``\n* Polish: ``pawelkoston``\n* Spanish: ``Julio Cesar Cabrera Cabrera``\n\nKey features\n------------\n\n* AJAX based django.admin-like paginated `datatables`_ (grids) with sorting / filters and custom actions.\n* Integrates Jinja2 into existing Django templates (DTL).\n* `Bootstrap 3`_ / `Bootstrap 4`_ / `Jinja2`_ / `Knockout.js`_ for Django projects.\n* No deep knowledge of Knockout.js is required: it has ready working components.\n* Dynamic adding / removing of inline formsets with Knockout.js, protected from XSS.\n* Default template renderers for Django forms / related forms / inline formsets with the possibility to override these\n to customize the visual layout.\n* `ForeignKeyGridWidget`_ provides `ForeignKeyRawIdWidget`_-like functionality to select `ModelForm`_ foreign key\n field value via AJAX query / response.\n* Django raw queries with ``filter()`` / ``exclude()`` / ``order()`` / ``values()`` / ``values_list()`` and SQL slicing\n support via `FilteredRawQuerySet`_, suitable for usage in `ListView`_ / `ListSortingView`_ / `KoGridView`_ derived\n classes.\n* `ListQuerySet`_ to query Python lists, including `prefetch_related()`_ results.\n* Jinja2 templates can be integrated into existing Django templates via custom template library tag::\n\n {% extends 'base_min.html' %}\n {% load jinja %}\n {% load static %}\n\n {% block main %}\n {% jinja 'bs_list.htm' with _render_=1 view=view object_list=object_list is_paginated=is_paginated page_obj=page_obj %}\n {% endblock main %}\n\nOverview\n--------\n\nKnockout.js uses unobtrusive `data-bind`_ HTML attributes with JSON-like values with causes no conflict to server-side\ndouble braces template syntax of DTL / Jinja2: no need to escape templates.\n\nCombining client-side Knockout.js templates and server-side Jinja2 templates allows to write more powerful and compact\ntemplate code.\n\nJinja2 is faster and is more powerful than built-in DTL templates. Jinja2 templates may be called from DTL templates\nby using custom template tag library ``{% load jinja %}``.\n\nUses\n----\n\n* https://github.com/knockout/knockout\n* https://github.com/mitsuhiko/jinja2\n* https://github.com/niwinz/django-jinja\n* Provides DTL tag library to include Jinja2 templates into DTL templates.\n* Knockout.js is used to provide `datatables`_ and for XSS-safe `empty_form`_ handling.\n* AJAX form validation, AJAX `viewmodels`_ response routing are implemented via bundled client-side scripts.\n\nIt's not a pure SPA framework, but a mixed approach of server-side pages with embedded AJAX content and client-side\nscripts. Although it may be used for SPA as well. Classical Web applications aren't \"outdated\" in any way - because such\napplications are much better indexable by web crawlers, Python is better language than Javascript in general, also\nserver-side has less glitches than browsers.\n\nMinor changes (version 0.8.1)\n-----------------------------\nDjango 2.2 support.\n\nImproves compatibility and stability of middleware with third party apps.\n\nImplemented `action 'meta_list' preload`_ for datatables.\n\nMajor changes (version 0.8.0)\n-----------------------------\n`Bootstrap 4`_ / `Bootstrap 3`_ support.\n\nDefault rendering layouts for fields / forms / related forms / inline formsets, which can be customized via providing\ncustom template or via inheriting the `Renderer`_ class.\n\nUnderscore.js templates support `template attributes merging`_ and `custom tags`_.\n\n`Nested components`_ and `Sparse components`_ at the client-side.\n\n`Nested serializer`_.\n\nMajor changes (version 0.7.0)\n-----------------------------\nDatatables now have new type of action ``'pagination'``. There are two built-in actions of this type implemented:\n``'rows_per_page'`` and ``'switch_highlight'``.\n\nDatatables support compound columns for better utilization of the display space. That allows to display more data\ncolumns, including foreign relations at the screen.\n\nDatatables ``glyphicon`` actions are rendered in the single column of datatable, instead of each action per column for\nbetter utilization of the display space.\n\nStatic assets are moved to '/djk' subdirectory, minimizing the risk of conflicts with third party assets.\n\nUpdated to latest versions of Knockout.js / jQuery / Bootstrap 3 (should also work with not-too-old ones).\n\n`viewmodels`_ AJAX response routing is rewritten as ``App.ViewModelRouter`` class with default instance\n``App.vmRouter``. It now supports binding viewmodel handlers to Javascript class instances methods.\n\nOptional built-in Javascript error logger.\n\n``App.NestedList`` internally used by `App.renderNestedList`_ for greater flexibility of client-side Javascript nested\nlists rendering. ``App.NestedList`` now supports ordered maps via ``_.ODict`` instances.\n\nAjax forms submitting is refactored into `App.AjaxForm`_ class, while setting up the ajax forms is performed by\n``App.AjaxForms``, for better flexibility.\n\n``App.readyInstances`` introduced for global client-side IoC, available in custom user scripts as well.\n\nKnockout.js method subscription / unsubscription is placed into ``App.ko.Subscriber`` mixin class. ``focus`` binding\nis implemented for Knockout.js.\n\nRequest mock-up when running without web server is greatly improved. That enables reverse resolving of FQN urls in\nconsole management commands and in background celery tasks via `reverseq()`_ calls when sites framework is correctly\nset up.\n\n``ast_eval`` templage tag.\n\nHeadless Chrome Selenium webdriver support (phantom.js is deprecated).\n\nMajor changes (version 0.6.0)\n-----------------------------\nAJAX actions are rewritten as server-side `ActionsView`_ class and client-side counterpart `App.Actions`_. It is now\nused as foundation for most of AJAX code, including grid datatables and new ``App.EditForm`` / ``App.EditInline``\nclient-side components.\n\nNew widget `PrefillWidget`_ to select pre-filled text from the list of supplied values.\n\nSelective skipping of `DisplayText`_ field widget rendering.\n\nBasic version of ``ViewmodelValidator`` for AJAX submitted forms.\n\nMajor changes (version 0.5.0)\n-----------------------------\nRewritten recursive underscore.js template processor, see `underscore.js templates`_.\n\nDisplaying verbose field names in grid rows, grid row actions and in `ForeignKeyGridWidget`_ placeholder.\n\nClean-up of client-side components code.\n\nBetter support for datatable grids that use RAW queries with ``LEFT JOIN``, which may have multiple rows with the same\n``pkVal`` equal to ``null``.\n\nImprovements in Selenium automation testing: better handling of automation commands, more of commands implemented,\nmuch larger test coverage.\n\n* Numerous bugfixes, including related field queries support in `FilteredRawQuerySet`_.\n\nMajor changes (version 0.4.0)\n-----------------------------\nLarge improvements in Selenium testing support: additional commands are implemented, auto-retry on DOM timeout, fixtures\nloading / saving which allows to skip already debugged parts of tests, saving developer's time.\n\n`ContextMiddleware`_ supports request mocking and request-time storage.\n\n`FilteredRawQuerySet`_ supports Q expressions (Q objects) with relation mapping.\n\n``BaseFilterView`` / `KoGridView`_ - basic support for Q expressions (currently is used for ``None`` value of field\nfilter), support for ``in`` query for ``choice`` filter value via the list of values.\n\nImproved support of optional Django model `get_str_fields()`_ method in `DisplayText`_ widget and in Knockout.js\ndatatable grids.\n\nVarious bugfixes.\n\nMinor changes (version 0.4.1)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nImplemented ``multiple_choices``: ``True`` option of the field filter ``type`` ``choices`` in `ListSortingView`_.\nThat allows to perform ``in`` field lookups for the selected field filter.\n\nLarge monolithic ``views.py`` split into smaller parts with symbols exported via module ``__init__.py`` for the\nconvenience and compatibility.\n\nAlternative breadcrumbs layout of field filters widgets.\n\nBugfixes and security fixes in query / views modules.\n\nMajor changes (version 0.3.0)\n-----------------------------\n\nAuto-configuration of nested foreign key filter fields in `KoGridView`_ / `ForeignKeyGridWidget`_.\n\n`FilteredRawQuerySet`_ now supports more precise ``.count()`` method.\n\n`ListQuerySet`_ supports significant part of Django queryset functionality for the lists of Django model instances,\nreturned by `prefetch_related()`_.\n\nBootstrap tabs generation macro `bs_tabs()`_ with client-side support of switching tabs when window.location.hash\nvalue changes.\n\n`SendmailQueue`_ functionality can be extended via injecting ioc class - for example to send email in the background\nvia `celery`_ task.\n\nMajor changes (version 0.2.0)\n-----------------------------\n``$.inherit()`` Javascript prototype inheritance function now supports multi-level inheritance with nested ``.super``\ncalls without having to specify parent class prototype property implicitely in descendant class instances, with newly\nintroduced ``$.SuperChain`` class.\n\n\"django.admin-like\" AJAX functionality was implemented via `KoGridView`_ class-based view (CBV) at server-side with\ncorresponding Knockout.js templates and Javascript classes at client-side. Besides providing standard CRUD actions and\nfilters, it allows to implement arbitrary actions in descendant classes and quickly design django.admin-like user\ninterfaces in non-admin views. AJAX calls also minimize server HTTP traffic, reducing network bandwitch and making the\nUI more responsive.\n\nNew `ForeignKeyGridWidget`_ was developed which provides `ForeignKeyRawIdWidget`_-like functionality in non-admin\n`ModelForm`_ classes to select foreign key fields value via AJAX query / response.\n\nSupport of auto-instantiating Javascript classes with binding these to selected DOM nodes with 'component' css class via\n`App.Components`_ class.\n\nSupport of auto-compiling / auto-loading client-side underscore.js templates via ``App.compileTemplate`` /\n``App.domTemplate`` / ``App.loadTemplates``. One of usage examples is the possibility of loading modal body from\nunderscore.js template in `App.Dialog`_.\n\nSupport of client-side generation of view urls with kwargs for client-side url names via updated ``context_processors.py``\nand client-side `App.routeUrl()`_ Javascript function.\n\n`tpl.resolve_cbv()`_ allows to resolve view class via url name and it's kwargs.\n\nDjango templates (DTL) and Jinja2 templates now can be mixed using shared Jinja2 template code via ``{% load jinja %}``\ntemplate library ``jinja`` template tags, which performs ``include`` for Jinja2 template with current context::\n\n {% extends 'base_min.html' %}\n {% load jinja %}\n {% load staticfiles %}\n\n {% block main %}\n {% jinja 'bs_list.htm' with _render_=1 view=view object_list=object_list is_paginated=is_paginated page_obj=page_obj %}\n {% endblock main %}\n\nNumerous bug fixes.\n\nDocumentation\n-------------\n\nThe full documentation is at https://django-jinja-knockout.readthedocs.org.\n\n\n\n", "description_content_type": "", "docs_url": "https://pythonhosted.org/django-jinja-knockout/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Dmitri-Sintsov/django-jinja-knockout", "keywords": "django,jinja,knockout.js,ajax,forms,datatables,grid,datagrid", "license": "LGPL-3.0", "maintainer": "", "maintainer_email": "", "name": "django-jinja-knockout", "package_url": "https://pypi.org/project/django-jinja-knockout/", "platform": "", "project_url": "https://pypi.org/project/django-jinja-knockout/", "project_urls": { "Homepage": "https://github.com/Dmitri-Sintsov/django-jinja-knockout" }, "release_url": "https://pypi.org/project/django-jinja-knockout/0.8.2/", "requires_dist": [ "django (>=1.8.0)", "Jinja2 (>=2.8)", "django-jinja (>=1.4.1)", "bleach (>=1.4.2)", "lxml (>=3.4.4)", "ensure (>=0.3.2)", "sqlparse (>=0.2.1)", "pytz" ], "requires_python": "", "summary": "Django AJAX ModelForms. Read-only display ModelForms. Django AJAX datatables with CRUD and custom actions. Supports Django Templates.", "version": "0.8.2" }, "last_serial": 5191819, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "478ad1fa77edf500daf1883bc7c2fee5", "sha256": "28c73409e7f1055289f9f893c2dad6e02867410563be43754dfb0a25d73096ff" }, "downloads": -1, "filename": "django-jinja-knockout-0.1.2.tar.gz", "has_sig": false, "md5_digest": "478ad1fa77edf500daf1883bc7c2fee5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395951, "upload_time": "2016-03-17T16:28:29", "url": "https://files.pythonhosted.org/packages/4e/67/67c480e4410ee51dc9eb223defa83cac177845cac4beaa25e1302cd882d6/django-jinja-knockout-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b21ffae95d97f8ad606e17db204e1037", "sha256": "98323f9faea3da94ee9075f9bbc4f4760cd57bcc6b069a5cf8c1218f5cc9ac93" }, "downloads": -1, "filename": "django-jinja-knockout-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b21ffae95d97f8ad606e17db204e1037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 452206, "upload_time": "2016-10-15T17:29:21", "url": "https://files.pythonhosted.org/packages/f0/e5/efdc5d5b1b3d090c66d2cdad75f57a0ef1e37196e2ece135e57cfa0300d0/django-jinja-knockout-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6a2717f0fa69aa3e7a2167739a33ae26", "sha256": "1f9cc175ed30c66e68340d28d615c359557121fa668bc756bef7f81941666fc5" }, "downloads": -1, "filename": "django-jinja-knockout-0.3.0.tar.gz", "has_sig": false, "md5_digest": "6a2717f0fa69aa3e7a2167739a33ae26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 468122, "upload_time": "2016-11-17T15:16:51", "url": "https://files.pythonhosted.org/packages/0a/0f/858545f65ffc9a0918f9a3f9543133fc57376141835a7d01098172280271/django-jinja-knockout-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "52b699b6cb344ab5489fe9800173a7f8", "sha256": "31236ea3c78e8ea3ff32241d0bc6325f78dda7b71306d90f55fdab5cfd7487c1" }, "downloads": -1, "filename": "django-jinja-knockout-0.4.0.tar.gz", "has_sig": false, "md5_digest": "52b699b6cb344ab5489fe9800173a7f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 485392, "upload_time": "2017-02-07T15:53:50", "url": "https://files.pythonhosted.org/packages/09/8c/99cad60909ac9470016eaa3927efc0b009d2d5de132ab54058e6879664c4/django-jinja-knockout-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "9c554e9e644fbd071808159175a186b3", "sha256": "ba91da2dd22fce1ce45e69905ad7abe80d16f0f6bd8902e2d889767ea1c21e53" }, "downloads": -1, "filename": "django-jinja-knockout-0.4.1.tar.gz", "has_sig": false, "md5_digest": "9c554e9e644fbd071808159175a186b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 484652, "upload_time": "2017-02-23T13:44:54", "url": "https://files.pythonhosted.org/packages/9f/f3/067b41a8b3e12d641b5afae30cf776bccaf9f0503bdbbacbcfa661593e10/django-jinja-knockout-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "020315d7a878da7996171850f40ae5bf", "sha256": "6512f4da4450e070088af944747d6607d3ef27a8ecf90eb9794e3c418724c1fe" }, "downloads": -1, "filename": "django-jinja-knockout-0.4.2.tar.gz", "has_sig": false, "md5_digest": "020315d7a878da7996171850f40ae5bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 494845, "upload_time": "2017-03-02T16:43:10", "url": "https://files.pythonhosted.org/packages/ee/d2/f867919bf630459209c1e3dff7f127b263561271961809edf4495b7beac6/django-jinja-knockout-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "0db3022925d30cb360cb09a2f6a04bd1", "sha256": "f0fd44ee66ca205ecd449113da9482e538096b19fe2e349bea6141925e58f87a" }, "downloads": -1, "filename": "django-jinja-knockout-0.4.3.tar.gz", "has_sig": false, "md5_digest": "0db3022925d30cb360cb09a2f6a04bd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 497052, "upload_time": "2017-03-22T09:57:28", "url": "https://files.pythonhosted.org/packages/93/2e/2b20ed3e833ea8acfff2749eb4e9804d9da63fd784c8d9f9a99d0163fc42/django-jinja-knockout-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "76983c5bffc357df63c23f62933eb198", "sha256": "e4291f18b12db1cc1a2673831ef291f0f07c43bbeaca78d3bae46cad1750ed0c" }, "downloads": -1, "filename": "django-jinja-knockout-0.5.0.tar.gz", "has_sig": false, "md5_digest": "76983c5bffc357df63c23f62933eb198", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 504223, "upload_time": "2017-04-17T15:07:33", "url": "https://files.pythonhosted.org/packages/54/05/16193b2153e622d514431308dadb8d9f5ef430e69e95fc141a23dec6ec24/django-jinja-knockout-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "5d35c43c0f7cc41339b6d82ff7afc629", "sha256": "fcbf0cc61682ed8801698359da76ac3d30ea8f39cd3f021c167a760ea29a5df0" }, "downloads": -1, "filename": "django-jinja-knockout-0.6.0.tar.gz", "has_sig": false, "md5_digest": "5d35c43c0f7cc41339b6d82ff7afc629", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 521089, "upload_time": "2017-09-11T15:14:17", "url": "https://files.pythonhosted.org/packages/63/13/c47be5d1f944fbe0e6bb3cb21bdd4e53d9450375163def34867c723fca32/django-jinja-knockout-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "8279736cd2f78ac79bfc2e2d163bbafb", "sha256": "b406f82d81083175039ecf2d256c94ee4b05a3b0479dcd2167093e7089fa6f5b" }, "downloads": -1, "filename": "django-jinja-knockout-0.7.0.tar.gz", "has_sig": false, "md5_digest": "8279736cd2f78ac79bfc2e2d163bbafb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 529012, "upload_time": "2019-04-23T09:53:09", "url": "https://files.pythonhosted.org/packages/c2/22/faab7368b54337854ccf5b82a9f77c3302ab10827a0adfe3fa610e2cf25c/django-jinja-knockout-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "39385e7f0174e91afc33684233b6418f", "sha256": "dc9667fa7fcd477d1358f7ef2671dc4fe76bed93330dce1463f8956155faeada" }, "downloads": -1, "filename": "django-jinja-knockout-0.7.1.tar.gz", "has_sig": false, "md5_digest": "39385e7f0174e91afc33684233b6418f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 529069, "upload_time": "2018-02-14T14:28:47", "url": "https://files.pythonhosted.org/packages/fb/14/d6404a24cc9c9d34c61dbb09ec1c9c75473ab53b8de2c09eafde9cb3c076/django-jinja-knockout-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "91f062d9e55de63a48425136e69335c4", "sha256": "61d8d4fe80a2ad54cf7d9b43ddf6750aaaf5d1bb75434c86f76d315393c77231" }, "downloads": -1, "filename": "django-jinja-knockout-0.8.0.tar.gz", "has_sig": false, "md5_digest": "91f062d9e55de63a48425136e69335c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 403002, "upload_time": "2019-01-30T16:56:42", "url": "https://files.pythonhosted.org/packages/4e/1a/1babeac162872d8b2adaf60d3f28be0614aacbd18922e82c612884f6107a/django-jinja-knockout-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "a7366983e74e8bb9b9bed21f77de4ac5", "sha256": "d26266c54470839aee36c58bdfe99d2b17f33a16b3fe9f074439061cbb3eddb8" }, "downloads": -1, "filename": "django-jinja-knockout-0.8.1.tar.gz", "has_sig": false, "md5_digest": "a7366983e74e8bb9b9bed21f77de4ac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 406325, "upload_time": "2019-04-23T09:53:15", "url": "https://files.pythonhosted.org/packages/cf/2d/4d7967327e73a9e489aa092b66752194f684dd8d36b6fe16d5275c306b4f/django-jinja-knockout-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "d7c2d8802cdbf8af3152e751ff5d2c72", "sha256": "bf3f31a18307b0f25125cbc4358ee466bc7c9547db2eb1184e34bc8e16c3cb2f" }, "downloads": -1, "filename": "django_jinja_knockout-0.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7c2d8802cdbf8af3152e751ff5d2c72", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 478342, "upload_time": "2019-04-26T09:06:20", "url": "https://files.pythonhosted.org/packages/32/c4/72013601dd40c6fd5cb0f20c9886aa26b2deb9ebfab4a0b5b3f6c1847252/django_jinja_knockout-0.8.2-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d7c2d8802cdbf8af3152e751ff5d2c72", "sha256": "bf3f31a18307b0f25125cbc4358ee466bc7c9547db2eb1184e34bc8e16c3cb2f" }, "downloads": -1, "filename": "django_jinja_knockout-0.8.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7c2d8802cdbf8af3152e751ff5d2c72", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 478342, "upload_time": "2019-04-26T09:06:20", "url": "https://files.pythonhosted.org/packages/32/c4/72013601dd40c6fd5cb0f20c9886aa26b2deb9ebfab4a0b5b3f6c1847252/django_jinja_knockout-0.8.2-py2.py3-none-any.whl" } ] }