{ "info": { "author": "Stephen McDonald", "author_email": "stephen.mc@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: Site Management" ], "description": ".. image:: https://secure.travis-ci.org/stephenmcd/django-overextends.png?branch=master\n :target: http://travis-ci.org/stephenmcd/django-overextends\n\nCreated by `Stephen McDonald `_\n\nIntroduction\n============\n\nA Django reusable app providing the ``overextends`` template tag, a\ndrop-in replacement for Django's ``extends`` tag, which allows you to\nuse circular template inheritance.\n\nThe primary use-case for ``overextends`` is to simultaneously override\nand extend templates from other reusable apps, in your own Django project.\n\nExample\n=======\n\nConsider the following settings module and templates, with the apps\n``app1`` and ``app2`` bundled in the project, for example's sake::\n\n # settings.py\n INSTALLED_APPS = (\n \"app1\",\n \"app2\",\n \"overextends\",\n )\n TEMPLATE_LOADERS = (\n \"django.template.loaders.filesystem.Loader\",\n \"django.template.loaders.app_directories.Loader\",\n )\n PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))\n TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, \"templates\"),)\n\n \n

Title

\n {% block main %}\n

A paragraph in app1

\n {% enblock %}\n \n\n \n {% overextends \"pages/page.html\" %}\n {% block main %}\n

A paragraph in app2, that wants to be on top of app1's main block

\n {{ block.super }}\n {% enblock %}\n\n \n {% overextends \"pages/page.html\" %}\n {% block main %}\n {{ block.super }}\n

A paragraph in the project's template directory, under the other main blocks

\n {% enblock %}\n\nThe resulting HTML rendered when ``pages/page.html`` was loaded would be::\n\n

Title

\n

A paragraph in app2, that wants to be on top of app1's main block

\n

A paragraph in app1

\n

A paragraph in the project's template directory, under the other main blocks

\n \n\nFor a detailed analysis of why you would use this approach, how it works,\nand alternative approaches, read my initial blog post:\n`Circular Template Inheritance for Django`_\n\nInstallation\n============\n\nThe easiest way to install django-overextends is directly from PyPi\nusing `pip`_ by running the following command::\n\n $ pip install -U django-overextends\n\nOtherwise you can download django-overextends and install it directly\nfrom source::\n\n $ python setup.py install\n\nProject Configuration\n=====================\n\nOnce installed you can configure your project to use\ndjango-overextends by adding the ``overextends`` app to the\n``INSTALLED_APPS`` in your project's ``settings`` module::\n\n INSTALLED_APPS = (\n # ... other apps here ...\n 'overextends',\n )\n\nFor Django 1.9+ you must add overextends to the `builtins` key of your `TEMPLATES` setting::\n\n TEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'APP_DIRS': True,\n 'OPTIONS': {\n 'builtins': ['overextends.templatetags.overextends_tags'],\n }\n },\n ]\n\n\nNote that while the ``overextends`` tag is provided by the package\n``overextends.templatetags.overextends_tags``, it is unnecessary to use\n``{% load overextends_tags %}`` in your templates. Like the ``extends``\ntag, ``overextends`` must be the first tag in your template, so it is\nautomatically added to Django's built-in template tags, removing the\nneed to load its tag library in each template.\n\n.. _`Circular Template Inheritance for Django`: http://blog.jupo.org/2012/05/17/circular-template-inheritance-for-django/\n.. _`pip`: http://www.pip-installer.org/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/stephenmcd/django-overextends", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-overextends", "package_url": "https://pypi.org/project/django-overextends/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-overextends/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/stephenmcd/django-overextends" }, "release_url": "https://pypi.org/project/django-overextends/0.4.3/", "requires_dist": null, "requires_python": null, "summary": "A Django reusable app providing the ability to use circular template inheritance.", "version": "0.4.3" }, "last_serial": 2764907, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c35a889336f403b5f0f415a01ed4dfe6", "sha256": "4e512a21b6d3dc5226b881cf7c9cc84931bbd27d16f1ab505580ce76e405279a" }, "downloads": -1, "filename": "django-overextends-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c35a889336f403b5f0f415a01ed4dfe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7361, "upload_time": "2012-06-10T06:08:08", "url": "https://files.pythonhosted.org/packages/e0/53/7eba2ac09493ac80133cf49469bb9302d3c5794482062e2db83fa873513e/django-overextends-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1323195a6f069f42f33311069ebdb7b3", "sha256": "37f6b58e9bb378a55816c1f32275830ab6775a88f95b4a69c66acb81230ca7c2" }, "downloads": -1, "filename": "django-overextends-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1323195a6f069f42f33311069ebdb7b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7448, "upload_time": "2012-07-14T06:37:00", "url": "https://files.pythonhosted.org/packages/8f/17/d3c0d9c97246aac69412f437fc0c5e99d725fd0ffe2e0f0457a05542b9fd/django-overextends-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "a752a351b4f7858bce5f7147ec232040", "sha256": "83da48ae92fe94824d32716256eb4eeb8244b35db47542cee15afefd630bf5ba" }, "downloads": -1, "filename": "django-overextends-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a752a351b4f7858bce5f7147ec232040", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7458, "upload_time": "2012-07-14T09:25:12", "url": "https://files.pythonhosted.org/packages/d9/bc/fe03abe075bf859bd64bb6482cce085b39dc668f9f6e964f58a11f7a8dec/django-overextends-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "5b5cbd8c45d0e79e1c77715e4775fd80", "sha256": "4b5e1efa00630d6ca18d5287a507879d9786d4db97bc753a1bb3bbe94e843eaa" }, "downloads": -1, "filename": "django-overextends-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5b5cbd8c45d0e79e1c77715e4775fd80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7526, "upload_time": "2012-09-01T04:40:38", "url": "https://files.pythonhosted.org/packages/5b/33/99aa3d6d499fa40c373e344a99fa3c8e5885e3dc2eb519f0cb14161db570/django-overextends-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4cc328993573ad086b215e36fc724ffc", "sha256": "bacc001806c41281dcee1e6f1a7374ca3fd8af9c1d300d108f8482351d0bb1ab" }, "downloads": -1, "filename": "django-overextends-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4cc328993573ad086b215e36fc724ffc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7513, "upload_time": "2013-08-28T20:33:44", "url": "https://files.pythonhosted.org/packages/80/cb/413071ee9b5d409380f18e4b8dd3b56f25e315a8fef11d5d45456f42d289/django-overextends-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3ccaab366084fa9082e5289e7a16e6eb", "sha256": "23608be1be84af0b2bb2d20c918a224ee6dbfeff12d06784bb6bd51f3fd39661" }, "downloads": -1, "filename": "django_overextends-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3ccaab366084fa9082e5289e7a16e6eb", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10640, "upload_time": "2014-02-18T11:34:58", "url": "https://files.pythonhosted.org/packages/1a/38/215f9aa5f9ec83fb77a8dad223f98579bb79d15c107e89d9385373297392/django_overextends-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e849affed1daa73037d57f3ecc6df044", "sha256": "c2348bc3b14fc2f3896e5caa3749b3d248998a7e0dfa9946dbd592c5929fb762" }, "downloads": -1, "filename": "django-overextends-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e849affed1daa73037d57f3ecc6df044", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7546, "upload_time": "2014-02-18T11:34:54", "url": "https://files.pythonhosted.org/packages/62/9f/57968dc7229b3c24b8485118778cc1339e0133bcb112dcf4b7209fff2d78/django-overextends-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "66508c1e48a540f235007f8b2336c207", "sha256": "17f84c55d0b3f31c5417b7ff67cf61c0f4a4993498e5d19e51d7dfe013f50747" }, "downloads": -1, "filename": "django_overextends-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "66508c1e48a540f235007f8b2336c207", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10644, "upload_time": "2014-03-28T11:18:39", "url": "https://files.pythonhosted.org/packages/d5/fc/4112f5c29412f1239499ac1382f103fdb7c8261d2bff8bc7ae2189edb1ca/django_overextends-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9844946d31083b5370035ac7e9afa076", "sha256": "ebb651e59c1f8e22a08b33f0a14f1efdc53d62ec953e23f4189cefae1756031a" }, "downloads": -1, "filename": "django-overextends-0.3.2.tar.gz", "has_sig": false, "md5_digest": "9844946d31083b5370035ac7e9afa076", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7546, "upload_time": "2014-03-28T11:18:36", "url": "https://files.pythonhosted.org/packages/fa/dc/ac597b38f084e79952312e0910488d0116984806e120db6228a1268f1ba2/django-overextends-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ed47f2cb66112796d575dbde03f7c561", "sha256": "034a52f0fb77c87355123cb4ccb0f393ddc3cc3b630052e220c3de55d6c74e40" }, "downloads": -1, "filename": "django_overextends-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ed47f2cb66112796d575dbde03f7c561", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10876, "upload_time": "2015-07-26T03:48:46", "url": "https://files.pythonhosted.org/packages/6a/12/99ff11936df08a0fc67aa367c171731529e5beef1eca7593214333db573c/django_overextends-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a535e3be6e9796aa8b55bcdd7642a888", "sha256": "63eed9add4282bc932d76c69abad2c20436d0984b62040fbdffd5872eadb7da6" }, "downloads": -1, "filename": "django-overextends-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a535e3be6e9796aa8b55bcdd7642a888", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7759, "upload_time": "2015-07-26T03:48:37", "url": "https://files.pythonhosted.org/packages/ae/66/e445e0e41cc004a6a66283021a4584041c648df4b147e1a40635d55d86a1/django-overextends-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "146bbb34ec2432a0aafbb9a3b9277c63", "sha256": "ae90d265a96a7dde1d01e95c7e1654997dfa8fc9c76f4889e237e684228607d7" }, "downloads": -1, "filename": "django_overextends-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "146bbb34ec2432a0aafbb9a3b9277c63", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11334, "upload_time": "2015-12-20T23:46:16", "url": "https://files.pythonhosted.org/packages/62/39/f5267102d3846f21a9d8cd3b609baed66ca677881ed3d0e96504e61b356f/django_overextends-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "025bde6a2b1aa3070440debfdd014779", "sha256": "332a5874d67160c2713e7d00278294d12a277f0f725d487f306fe1f31f3eeba4" }, "downloads": -1, "filename": "django-overextends-0.4.1.tar.gz", "has_sig": false, "md5_digest": "025bde6a2b1aa3070440debfdd014779", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7971, "upload_time": "2015-12-20T23:46:00", "url": "https://files.pythonhosted.org/packages/84/93/2820cbea2751e91f5d5f54d5a5ff6a71d6d3330d6b6fb5fad841fca27f8a/django-overextends-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "b6d178ac3b46fa49d8c84859ef1977d7", "sha256": "c5e765a3531218485ce6f0e79ad285c459ff92427faa7016575ff4a8e6a35144" }, "downloads": -1, "filename": "django_overextends-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b6d178ac3b46fa49d8c84859ef1977d7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11419, "upload_time": "2016-08-19T00:08:24", "url": "https://files.pythonhosted.org/packages/d9/c5/4f9bd8ca2be78e4fe879047f27a59596e6c28d4b2fafeb29a7fe0ab70614/django_overextends-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71b13524d626150aadbabac6e48e6b72", "sha256": "2605444f5a40a8e04644df278a5d914fcf73a60a9b29c92f2665443eb9743d17" }, "downloads": -1, "filename": "django-overextends-0.4.2.tar.gz", "has_sig": false, "md5_digest": "71b13524d626150aadbabac6e48e6b72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8077, "upload_time": "2016-08-19T00:08:20", "url": "https://files.pythonhosted.org/packages/8a/31/5f04b451fbcaa8e404036f644aab162d5d0504f71ddf2e8d54a33abb6a7e/django-overextends-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "d4743649679bd2b7dbb093e95cf3bc00", "sha256": "e9c1082e384473ec03ab53821691d79a3f160fef43c15a0de44741b5e9430e4d" }, "downloads": -1, "filename": "django_overextends-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4743649679bd2b7dbb093e95cf3bc00", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11487, "upload_time": "2017-04-10T00:59:38", "url": "https://files.pythonhosted.org/packages/00/ea/843fc542fae2af50f5c3d543245e8175307328c82b6bd1ef4d2b0edf4943/django_overextends-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23c8dbbf78d2be466f6eea4a8ff195fb", "sha256": "f53bfcec62731d1b4811745616ddefa849faee98874b01bbabd794381cbb8261" }, "downloads": -1, "filename": "django-overextends-0.4.3.tar.gz", "has_sig": false, "md5_digest": "23c8dbbf78d2be466f6eea4a8ff195fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8122, "upload_time": "2017-04-10T00:59:35", "url": "https://files.pythonhosted.org/packages/a0/f1/4a3b61c7f304a1a6c75133aa8793fdb1d287f09a7006e560a52dd469ab83/django-overextends-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d4743649679bd2b7dbb093e95cf3bc00", "sha256": "e9c1082e384473ec03ab53821691d79a3f160fef43c15a0de44741b5e9430e4d" }, "downloads": -1, "filename": "django_overextends-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4743649679bd2b7dbb093e95cf3bc00", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11487, "upload_time": "2017-04-10T00:59:38", "url": "https://files.pythonhosted.org/packages/00/ea/843fc542fae2af50f5c3d543245e8175307328c82b6bd1ef4d2b0edf4943/django_overextends-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23c8dbbf78d2be466f6eea4a8ff195fb", "sha256": "f53bfcec62731d1b4811745616ddefa849faee98874b01bbabd794381cbb8261" }, "downloads": -1, "filename": "django-overextends-0.4.3.tar.gz", "has_sig": false, "md5_digest": "23c8dbbf78d2be466f6eea4a8ff195fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8122, "upload_time": "2017-04-10T00:59:35", "url": "https://files.pythonhosted.org/packages/a0/f1/4a3b61c7f304a1a6c75133aa8793fdb1d287f09a7006e560a52dd469ab83/django-overextends-0.4.3.tar.gz" } ] }