{ "info": { "author": "Dmitry Pechnikov", "author_email": "dspechnikov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "django-slugger\n==============\n\n.. image:: https://gitlab.com/dspechnikov/django-slugger/badges/master/pipeline.svg\n :alt: build status\n :target: https://gitlab.com/dspechnikov/django-slugger/commits/master\n\n.. image:: https://gitlab.com/dspechnikov/django-slugger/badges/master/coverage.svg\n :alt: code coverage\n :target: https://gitlab.com/dspechnikov/django-slugger/commits/master\n\n.. image:: https://img.shields.io/pypi/v/django-slugger.svg\n :alt: pypi version\n :target: https://pypi.python.org/pypi/django-slugger\n\n.. image:: https://img.shields.io/pypi/l/django-slugger.svg\n :alt: license\n :target: https://opensource.org/licenses/MIT\n\n.. image:: https://img.shields.io/pypi/pyversions/django-slugger.svg\n :alt: python versions\n :target: https://www.python.org/\n\n.. image:: https://img.shields.io/badge/django-1.11,%202.0-blue.svg\n :alt: django versions\n :target: https://www.djangoproject.com/\n\nAutomatic slug field for your Django models.\n\nFeatures\n--------\n\n* One query to rule them all. No database spam on model save.\n* Supports all standard \"unique_for\" field attributes like *unique_for_date*.\n* Supports model meta *unique_together*.\n* Supports custom \"slugify\" functions.\n\nHow it works\n------------\n\ndjango-slugger provides ``AutoSlugField`` which value is automatically\ngenerated if it is not filled manually. If the field has any \"uniqueness\"\nconstraint (``unique=True``, for example), numerical suffix will be used if\nnecessary to prevent constraint violation.\n\nIf generated slug exceeds field ``max_length``, slug value will be cut to\nfit in. This does not apply to suffixed slugs. Increase ``max_length``\nattribute value or use `custom slug template`_ if you need more space to\nensure slug uniqueness.\n\nInstallation\n------------\n\n.. code-block:: bash\n\n pip install django-slugger\n\nUsage\n-----\n\n.. code-block:: python\n\n from slugger import AutoSlugField\n\n class AutoSlugModel(models.Model):\n title = models.CharField(max_length=255)\n slug = AutoSlugField(populate_from='title')\n\nCustom slug template\n++++++++++++++++++++\n\nBy default, django-slugger will use Django slugify_ function\n(combined with unidecode_ to handle non-ASCII characters). To use your own function,\nspecify it in ``slugify`` argument.\n\n.. code-block:: python\n\n def custom_slugify(value):\n return 'custom-%s' % value\n\n class CustomAutoSlugModel(models.Model):\n title = models.CharField(max_length=255)\n slug = AutoSlugField(populate_from='title', slugify=custom_slugify)\n\n.. note::\n\n ``slugify`` argument must be top-level named function.\n\n.. _slugify: https://docs.djangoproject.com/en/2.0/ref/utils/#django.utils.text.slugify\n.. _unidecode: https://pypi.python.org/pypi/Unidecode\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/dspechnikov/django-slugger/", "keywords": "django field slug auto", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-slugger", "package_url": "https://pypi.org/project/django-slugger/", "platform": "", "project_url": "https://pypi.org/project/django-slugger/", "project_urls": { "Homepage": "https://gitlab.com/dspechnikov/django-slugger/" }, "release_url": "https://pypi.org/project/django-slugger/1.1.2/", "requires_dist": [ "django", "unidecode" ], "requires_python": "", "summary": "Automatic slug field for Django.", "version": "1.1.2" }, "last_serial": 4248625, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "ffcd66c911a2a3e8badf60aa47880a06", "sha256": "8dc90568319ec7cb261436f869143208b439a5e63a57d025968cc0944bf91d4a" }, "downloads": -1, "filename": "django_slugger-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ffcd66c911a2a3e8badf60aa47880a06", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6776, "upload_time": "2017-10-02T21:52:23", "url": "https://files.pythonhosted.org/packages/48/69/1d92cce79dc9c9094682a44a7edbec0d13fea647be76396a4107700f986b/django_slugger-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20bcd698c515e9dddb293bc2f175ad50", "sha256": "2379c556ebb21b0a062f8f1cfade3b658739a43336e937bb46dcc4fdf0d90a5c" }, "downloads": -1, "filename": "django-slugger-1.0.1.tar.gz", "has_sig": false, "md5_digest": "20bcd698c515e9dddb293bc2f175ad50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6584, "upload_time": "2017-10-02T21:52:24", "url": "https://files.pythonhosted.org/packages/b7/28/dd027a4cfedcdbd7aa1d1fb046d247441187b9708f27455d1310b4826824/django-slugger-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "4863a59e5a914921c7ce1705514daa35", "sha256": "daf8cb8339d23047c594dd138d0d2206691f2640015c882386a962f55d0af8b4" }, "downloads": -1, "filename": "django_slugger-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4863a59e5a914921c7ce1705514daa35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6912, "upload_time": "2017-10-11T08:14:25", "url": "https://files.pythonhosted.org/packages/1a/12/ebbd025d1bc3f488c8b7e45f24b08fa96423ef66c3ab883782dd946837ab/django_slugger-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e8d42a169ffb06711876bd7bc13dbb8", "sha256": "2494843ee20056cf1b1bc88fb86258894657ac1eeb8b44eba1def39bb6514007" }, "downloads": -1, "filename": "django-slugger-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3e8d42a169ffb06711876bd7bc13dbb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6757, "upload_time": "2017-10-11T08:14:27", "url": "https://files.pythonhosted.org/packages/b0/19/e7250b4983d223ba1bed03c770b7732e20ed38d7ee40da04391188fe4e2b/django-slugger-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "743aa6784c4bb7af75cb7bc865c4386c", "sha256": "c769a5ae0843e088530ee73f7ae676a62a2a5fae2252dd8dd67dbddb93fc71d2" }, "downloads": -1, "filename": "django_slugger-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "743aa6784c4bb7af75cb7bc865c4386c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6899, "upload_time": "2017-10-16T19:26:40", "url": "https://files.pythonhosted.org/packages/92/62/97dd21d069efb28a2389640c1f0d8622ea6ef5c027a27c43f09f4ee26228/django_slugger-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdee828f6e8c716e277b6f4c8c41bafb", "sha256": "b352428b1babb95954ca5e141d7c4afc4c56c29495523d134e117b42117894b6" }, "downloads": -1, "filename": "django-slugger-1.0.3.tar.gz", "has_sig": false, "md5_digest": "cdee828f6e8c716e277b6f4c8c41bafb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6815, "upload_time": "2017-10-16T19:26:41", "url": "https://files.pythonhosted.org/packages/c0/01/e718aca55486147f71bd786e047b0b23a1b2a15c3958281c0784c663cce4/django-slugger-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "eff617156d31e78d8ce67354d9c697a6", "sha256": "482019b3596dc7d096f66d4c8e7ff4fa4164ecdea49018e4d8bf97365635165b" }, "downloads": -1, "filename": "django_slugger-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "eff617156d31e78d8ce67354d9c697a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6900, "upload_time": "2017-10-18T19:04:52", "url": "https://files.pythonhosted.org/packages/3d/8f/341e0a84e898f1f037d8d9dd9f6039b40f469c2702c445e21a5b4b3267b9/django_slugger-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea6a6acd783d5cdf9eefb65e822c9173", "sha256": "28f4c11a0ccc96ee5c51014b0b1b4a4633ed1504b766b1249b73eeeb3f97bc73" }, "downloads": -1, "filename": "django-slugger-1.0.4.tar.gz", "has_sig": false, "md5_digest": "ea6a6acd783d5cdf9eefb65e822c9173", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6842, "upload_time": "2017-10-18T19:04:53", "url": "https://files.pythonhosted.org/packages/91/d4/200b7b24d4397d1494f1cee9119c5c0ef5fff7116a3e657f5ea2e47b977a/django-slugger-1.0.4.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "240563409b2bdbe72b3a06e4755725ac", "sha256": "dc7bf70f8e00bb820e2dd58697339543c8da000916b8df7b03d67e778031081f" }, "downloads": -1, "filename": "django_slugger-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "240563409b2bdbe72b3a06e4755725ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4926, "upload_time": "2018-07-12T06:44:39", "url": "https://files.pythonhosted.org/packages/86/e1/45040552c96e31040c2e91cd5a206c45535526058d6c25f67d42511dd156/django_slugger-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "009cb7e52ee4c223a287ee85bad04271", "sha256": "2a8e9ccb0a76a83ee256ed6e6ce2158a710237971c96f6896cec231af220e1b2" }, "downloads": -1, "filename": "django-slugger-1.1.0.tar.gz", "has_sig": false, "md5_digest": "009cb7e52ee4c223a287ee85bad04271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6857, "upload_time": "2018-07-12T06:44:40", "url": "https://files.pythonhosted.org/packages/93/fc/216cef158da73a0cb3a65e9ab5ca2eb7e5286cebf226d63ec13ee22f3e51/django-slugger-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "64e612b7eebf0d4292413c61e591b7e6", "sha256": "fcb0c05bb6d13752cead50b7e70dfb0c5e7286af21521ed7664f76fa8603da6d" }, "downloads": -1, "filename": "django_slugger-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "64e612b7eebf0d4292413c61e591b7e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4927, "upload_time": "2018-09-07T10:02:51", "url": "https://files.pythonhosted.org/packages/9a/66/4ec6a0729f6e7c190c8655390c5e91abaf9a7905891f7771af1df0e875b0/django_slugger-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "103893872190bf6fe4669d0f46c08c75", "sha256": "c78103021c5b8854023f196bf7cd4df64faea91c21cafa3b0135332586c24901" }, "downloads": -1, "filename": "django-slugger-1.1.1.tar.gz", "has_sig": false, "md5_digest": "103893872190bf6fe4669d0f46c08c75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6853, "upload_time": "2018-09-07T10:02:52", "url": "https://files.pythonhosted.org/packages/46/42/bf5fbcc52b5bc6ff82dd6a0a0c07b3bd6cb902134bd93dd5bf537b9b9fbc/django-slugger-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "70521f0815ffa8dbdcd139f5bca91e0c", "sha256": "61059a482774945357924f1fd75f4f0028f54488d5b518d2dd527d967348237c" }, "downloads": -1, "filename": "django_slugger-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "70521f0815ffa8dbdcd139f5bca91e0c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4929, "upload_time": "2018-09-07T14:25:32", "url": "https://files.pythonhosted.org/packages/13/1a/085ef983d0d9cc01d830a39a713ac2f8ba93546ebf8ce8b3c9597ffd2982/django_slugger-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "957858cbf43d951555fd3c3ed22ec4a6", "sha256": "634fcb6df91319b045f30abe50c6835a4fab12ade5d35616accb83fbd481e096" }, "downloads": -1, "filename": "django-slugger-1.1.2.tar.gz", "has_sig": false, "md5_digest": "957858cbf43d951555fd3c3ed22ec4a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6924, "upload_time": "2018-09-07T14:25:32", "url": "https://files.pythonhosted.org/packages/1e/02/10e6b2fc09fd87f34b26829b839a3687479f98614220dac9f8f55505c143/django-slugger-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "70521f0815ffa8dbdcd139f5bca91e0c", "sha256": "61059a482774945357924f1fd75f4f0028f54488d5b518d2dd527d967348237c" }, "downloads": -1, "filename": "django_slugger-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "70521f0815ffa8dbdcd139f5bca91e0c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4929, "upload_time": "2018-09-07T14:25:32", "url": "https://files.pythonhosted.org/packages/13/1a/085ef983d0d9cc01d830a39a713ac2f8ba93546ebf8ce8b3c9597ffd2982/django_slugger-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "957858cbf43d951555fd3c3ed22ec4a6", "sha256": "634fcb6df91319b045f30abe50c6835a4fab12ade5d35616accb83fbd481e096" }, "downloads": -1, "filename": "django-slugger-1.1.2.tar.gz", "has_sig": false, "md5_digest": "957858cbf43d951555fd3c3ed22ec4a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6924, "upload_time": "2018-09-07T14:25:32", "url": "https://files.pythonhosted.org/packages/1e/02/10e6b2fc09fd87f34b26829b839a3687479f98614220dac9f8f55505c143/django-slugger-1.1.2.tar.gz" } ] }