<p align="center">
<a href="https://www.django-unicorn.com/"><img src="https://github.com/adamghill/django-unicorn/raw/a98539b6e4b1123705559116a77e63eea7e2b8d0/img/unicorn-logo.png" alt="django-unicorn logo" height="200"/></a>
</p>
<h1 align="center">
<a href="https://www.django-unicorn.com/">Unicorn</a>
<p>The magical reactive component framework for Django β¨</p>
</h1>
![PyPI](https://img.shields.io/pypi/v/django-unicorn?color=blue&style=flat-square)
![PyPI - Downloads](https://img.shields.io/pypi/dm/django-unicorn?color=blue&style=flat-square)
![coverage](https://raw.githubusercontent.com/adamghill/django-unicorn/py-code-coverage/badges/coverage.svg)
![GitHub Sponsors](https://img.shields.io/github/sponsors/adamghill?color=blue&style=flat-square)
[![All Contributors](https://img.shields.io/badge/all_contributors-17-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE - Do not remove or modify above line -->
[Unicorn](https://www.django-unicorn.com) adds modern reactive component functionality to your Django templates without having to learn a new templating language or fight with complicated JavaScript frameworks. It seamlessly extends Django past its server-side framework roots without giving up all of its niceties or forcing you to rebuild your application. With Django Unicorn, you can quickly and easily add rich front-end interactions to your templates, all while using the power of Django.
**[https://www.django-unicorn.com](https://www.django-unicorn.com) has extensive documentation, code examples, and more!**
## β‘ Getting started
### 1. [Install the package](https://www.django-unicorn.com/docs/installation/)
`pip install django-unicorn` OR `poetry add django-unicorn`
### 2. Add `django_unicorn` to `INSTALLED_APPS`
```python
# settings.py
INSTALLED_APPS = (
# other apps
"django_unicorn",
)
```
### 3. Update urls.py
```python
# urls.py
import django_unicorn
urlpatterns = (
# other urls
path("unicorn/", include("django_unicorn.urls")),
)
```
### 4. Add `Unicorn` to the HTML template
```html
<!-- template.html -->
{% load unicorn %}
<html>
<head>
{% unicorn_scripts %}
</head>
<body>
{% csrf_token %}
</body>
</html>
```
### 5. [Create a component](https://www.django-unicorn.com/docs/components/)
`python manage.py startunicorn myapp COMPONENT_NAME`
`Unicorn` uses the term "component" to refer to a set of interactive functionality that can be put into templates. A component consists of a Django HTML template and a Python view class which contains the backend code. After running the management command, two new files will be created:
- `myapp/templates/unicorn/COMPONENT_NAME.html` (component template)
- `myapp/components/COMPONENT_NAME.py` (component view)
### 6. Add the component to your template
```html
<!-- template.html -->
{% load unicorn %}
<html>
<head>
{% unicorn_scripts %}
</head>
<body>
{% csrf_token %}
{% unicorn 'COMPONENT_NAME' %}
</body>
</html>
```
## [Example todo component](https://www.django-unicorn.com/examples/todo)
The `unicorn:` attributes bind the element to data and can also trigger methods by listening for events, e.g. `click`, `input`, `keydown`, etc.
```html
<!-- todo.html -->
<div>
<form unicorn:submit.prevent="add">
<input type="text"
unicorn:model.defer="task"
unicorn:keyup.escape="task=''"
placeholder="New task" id="task"></input>
</form>
<button unicorn:click="add">Add</button>
<button unicorn:click="$reset">Clear all tasks</button>
<p>
{% if tasks %}
<ul>
{% for task in tasks %}
<li>{{ task }}</li>
{% endfor %}
</ul>
{% else %}
No tasks π
{% endif %}
</p>
</div>
```
```python
# todo.py
from django_unicorn.components import UnicornView
from django import forms
class TodoForm(forms.Form):
task = forms.CharField(min_length=2, max_length=20, required=True)
class TodoView(UnicornView):
task = ""
tasks = []
def add(self):
if self.is_valid():
self.tasks.append(self.task)
self.task = ""
```
## β¨ Wait, is this magic?
Sort of! At least it might feel like it. π€©
1. `Unicorn` progressively enhances a normal Django view, so the initial render is fast and great for SEO.
2. `Unicorn` binds to the elements you specify and automatically makes AJAX calls when needed.
3. `Unicorn` seamlessly updates the DOM when the HTML changes.
Focus on building regular Django templates and Python classes without needing to switch to another language or use unnecessary infrastructure.
## π€― But wait, there's more!
As if that wasn't enough, other features include:
- [Form Validation](https://www.django-unicorn.com/docs/validation/)
- [Redirection](https://www.django-unicorn.com/docs/redirecting/)
- [Loading States](https://www.django-unicorn.com/docs/loading-states/)
- [Dirty States](https://www.django-unicorn.com/docs/dirty-states/)
- [Partial Updates](https://www.django-unicorn.com/docs/partial-updates/)
- [Polling](https://www.django-unicorn.com/docs/polling/)
- [Scroll Triggering](https://www.django-unicorn.com/docs/visibility/)
- [Messages](https://www.django-unicorn.com/docs/messages/)
- [Javascript Integration](https://www.django-unicorn.com/docs/advanced/)
## π Dig In
- [Documentation](https://www.django-unicorn.com/docs/)
- [Examples](https://www.django-unicorn.com/examples/todo)
- [Screencasts](https://www.django-unicorn.com/screencasts/installation)
- [Changelog](https://www.django-unicorn.com/docs/changelog/)
## β€οΈ Support
This project is supported by GitHub [Sponsors](https://github.com/sponsors/adamghill) and [Digital Ocean](https://m.do.co/c/617d629f56c0).
<p>
<a href="https://m.do.co/c/617d629f56c0">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px">
</a>
</p>
## π§ Contributors
Check out [this guide](DEVELOPING.md) for more details on how to contribute.
Thanks to the following wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)) who have helped build `Unicorn`.
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://adamghill.com"><img src="https://avatars0.githubusercontent.com/u/317045?v=4?s=100" width="100px;" alt="Adam Hill"/><br /><sub><b>Adam Hill</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=adamghill" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=adamghill" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://python3.ninja"><img src="https://avatars1.githubusercontent.com/u/44167?v=4?s=100" width="100px;" alt="Andres Vargas"/><br /><sub><b>Andres Vargas</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=zodman" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://iskra.ml"><img src="https://avatars3.githubusercontent.com/u/6555851?v=4?s=100" width="100px;" alt="Eddy Ernesto del Valle Pino"/><br /><sub><b>Eddy Ernesto del Valle Pino</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=edelvalle" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/yaser-al-najjar-429b9096/"><img src="https://avatars3.githubusercontent.com/u/10493809?v=4?s=100" width="100px;" alt="Yaser Al-Najjar"/><br /><sub><b>Yaser Al-Najjar</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=yaseralnajjar" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sbidy"><img src="https://avatars.githubusercontent.com/u/1077364?v=4?s=100" width="100px;" alt="Stephan Traub"/><br /><sub><b>Stephan Traub</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=sbidy" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/frbor"><img src="https://avatars.githubusercontent.com/u/2320183?v=4?s=100" width="100px;" alt="Fredrik Borg"/><br /><sub><b>Fredrik Borg</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=frbor" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=frbor" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mbacicc"><img src="https://avatars.githubusercontent.com/u/46646960?v=4?s=100" width="100px;" alt="mbacicc"/><br /><sub><b>mbacicc</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=mbacicc" title="Code">π»</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://ambient-innovation.com"><img src="https://avatars.githubusercontent.com/u/3176075?v=4?s=100" width="100px;" alt="Ron"/><br /><sub><b>Ron</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=GitRon" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Franziskhan"><img src="https://avatars.githubusercontent.com/u/86062014?v=4?s=100" width="100px;" alt="Franziskhan"/><br /><sub><b>Franziskhan</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=Franziskhan" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshiggins"><img src="https://avatars.githubusercontent.com/u/5124298?v=4?s=100" width="100px;" alt="Josh Higgins"/><br /><sub><b>Josh Higgins</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=joshiggins" title="Tests">β οΈ</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=joshiggins" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MayasMess"><img src="https://avatars.githubusercontent.com/u/51958712?v=4?s=100" width="100px;" alt="Amayas Messara"/><br /><sub><b>Amayas Messara</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=MayasMess" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.apoorvapandey.com"><img src="https://avatars.githubusercontent.com/u/21103831?v=4?s=100" width="100px;" alt="Apoorva Pandey"/><br /><sub><b>Apoorva Pandey</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=apoorvaeternity" title="Tests">β οΈ</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=apoorvaeternity" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.nerdocs.at"><img src="https://avatars.githubusercontent.com/u/2955584?v=4?s=100" width="100px;" alt="Christian GonzΓ‘lez"/><br /><sub><b>Christian GonzΓ‘lez</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=nerdoc" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=nerdoc" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/robwa"><img src="https://avatars.githubusercontent.com/u/4658937?v=4?s=100" width="100px;" alt="robwa"/><br /><sub><b>robwa</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=robwa" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=robwa" title="Tests">β οΈ</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://medium.com/@pbadeer"><img src="https://avatars.githubusercontent.com/u/467756?v=4?s=100" width="100px;" alt="Preston Badeer"/><br /><sub><b>Preston Badeer</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=pbadeer" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/stat1c-void"><img src="https://avatars.githubusercontent.com/u/9142081?v=4?s=100" width="100px;" alt="Sergei"/><br /><sub><b>Sergei</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=stat1c-void" title="Documentation">π</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=stat1c-void" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=stat1c-void" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bazubii"><img src="https://avatars.githubusercontent.com/u/12039914?v=4?s=100" width="100px;" alt="bazubii"/><br /><sub><b>bazubii</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=bazubii" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=bazubii" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dancaron"><img src="https://avatars.githubusercontent.com/u/535851?v=4?s=100" width="100px;" alt="Dan Caron"/><br /><sub><b>Dan Caron</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=dancaron" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://hauntsaninja.github.io/"><img src="https://avatars.githubusercontent.com/u/12621235?v=4?s=100" width="100px;" alt="Shantanu"/><br /><sub><b>Shantanu</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=hauntsaninja" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/regoawt"><img src="https://avatars.githubusercontent.com/u/49868464?v=4?s=100" width="100px;" alt="regoawt"/><br /><sub><b>regoawt</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=regoawt" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=regoawt" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lassebomh"><img src="https://avatars.githubusercontent.com/u/31809070?v=4?s=100" width="100px;" alt="Lasse H. Bomholt"/><br /><sub><b>Lasse H. Bomholt</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=lassebomh" title="Code">π»</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://marteydodoo.com"><img src="https://avatars.githubusercontent.com/u/49076?v=4?s=100" width="100px;" alt="Martey Dodoo"/><br /><sub><b>Martey Dodoo</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=martey" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://digitalpinup.art"><img src="https://avatars.githubusercontent.com/u/1392097?v=4?s=100" width="100px;" alt="Pierre"/><br /><sub><b>Pierre</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=bloodywing" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://roman.pt"><img src="https://avatars.githubusercontent.com/u/75075?v=4?s=100" width="100px;" alt="Roman Imankulov"/><br /><sub><b>Roman Imankulov</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=imankulov" title="Tests">β οΈ</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=imankulov" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rhymiz"><img src="https://avatars.githubusercontent.com/u/7029352?v=4?s=100" width="100px;" alt="Lemi Boyce"/><br /><sub><b>Lemi Boyce</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=rhymiz" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://jacksund.github.io"><img src="https://avatars.githubusercontent.com/u/47992949?v=4?s=100" width="100px;" alt="Jack Sundberg"/><br /><sub><b>Jack Sundberg</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=jacksund" title="Code">π»</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siliconcow"><img src="https://avatars.githubusercontent.com/u/908362?v=4?s=100" width="100px;" alt="siliconcow"/><br /><sub><b>siliconcow</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=siliconcow" title="Code">π»</a> <a href="https://github.com/adamghill/django-unicorn/commits?author=siliconcow" title="Tests">β οΈ</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://rahma.hashnode.dev/"><img src="https://avatars.githubusercontent.com/u/35562131?v=4?s=100" width="100px;" alt="Akintola Rahmat"/><br /><sub><b>Akintola Rahmat</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=mihrab34" title="Code">π»</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://www.pythonbynight.com"><img src="https://avatars.githubusercontent.com/u/46942991?v=4?s=100" width="100px;" alt="Mario Munoz"/><br /><sub><b>Mario Munoz</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=tataraba" title="Documentation">π</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/epw1624"><img src="https://avatars.githubusercontent.com/u/112768709?v=4?s=100" width="100px;" alt="Emily Wood"/><br /><sub><b>Emily Wood</b></sub></a><br /><a href="https://github.com/adamghill/django-unicorn/commits?author=epw1624" title="Code">π»</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
Raw data
{
"_id": null,
"home_page": "https://www.django-unicorn.com",
"name": "django-unicorn",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.8",
"maintainer_email": null,
"keywords": "django, python, javascript, fullstack",
"author": "Adam Hill",
"author_email": "unicorn@adamghill.com",
"download_url": "https://files.pythonhosted.org/packages/c0/9c/0be999c659386e424e9868d456cead2d324667987aee2381390edb8b8366/django_unicorn-0.61.0.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <a href=\"https://www.django-unicorn.com/\"><img src=\"https://github.com/adamghill/django-unicorn/raw/a98539b6e4b1123705559116a77e63eea7e2b8d0/img/unicorn-logo.png\" alt=\"django-unicorn logo\" height=\"200\"/></a>\n</p>\n\n<h1 align=\"center\">\n <a href=\"https://www.django-unicorn.com/\">Unicorn</a>\n <p>The magical reactive component framework for Django \u2728</p>\n</h1>\n\n![PyPI](https://img.shields.io/pypi/v/django-unicorn?color=blue&style=flat-square)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/django-unicorn?color=blue&style=flat-square)\n![coverage](https://raw.githubusercontent.com/adamghill/django-unicorn/py-code-coverage/badges/coverage.svg)\n![GitHub Sponsors](https://img.shields.io/github/sponsors/adamghill?color=blue&style=flat-square)\n[![All Contributors](https://img.shields.io/badge/all_contributors-17-orange.svg?style=flat-square)](#contributors-)\n<!-- ALL-CONTRIBUTORS-BADGE - Do not remove or modify above line -->\n\n[Unicorn](https://www.django-unicorn.com) adds modern reactive component functionality to your Django templates without having to learn a new templating language or fight with complicated JavaScript frameworks. It seamlessly extends Django past its server-side framework roots without giving up all of its niceties or forcing you to rebuild your application. With Django Unicorn, you can quickly and easily add rich front-end interactions to your templates, all while using the power of Django.\n\n**[https://www.django-unicorn.com](https://www.django-unicorn.com) has extensive documentation, code examples, and more!**\n\n## \u26a1 Getting started\n\n### 1. [Install the package](https://www.django-unicorn.com/docs/installation/)\n\n`pip install django-unicorn` OR `poetry add django-unicorn`\n\n### 2. Add `django_unicorn` to `INSTALLED_APPS`\n\n```python\n# settings.py\nINSTALLED_APPS = (\n # other apps\n \"django_unicorn\",\n)\n```\n\n### 3. Update urls.py\n\n```python\n# urls.py\nimport django_unicorn\n\nurlpatterns = (\n # other urls\n path(\"unicorn/\", include(\"django_unicorn.urls\")),\n)\n```\n\n### 4. Add `Unicorn` to the HTML template\n\n```html\n<!-- template.html -->\n{% load unicorn %}\n\n<html>\n <head>\n {% unicorn_scripts %}\n </head>\n <body>\n {% csrf_token %}\n </body>\n</html>\n```\n\n### 5. [Create a component](https://www.django-unicorn.com/docs/components/)\n\n`python manage.py startunicorn myapp COMPONENT_NAME`\n\n`Unicorn` uses the term \"component\" to refer to a set of interactive functionality that can be put into templates. A component consists of a Django HTML template and a Python view class which contains the backend code. After running the management command, two new files will be created:\n\n- `myapp/templates/unicorn/COMPONENT_NAME.html` (component template)\n- `myapp/components/COMPONENT_NAME.py` (component view)\n\n### 6. Add the component to your template\n\n```html\n<!-- template.html -->\n{% load unicorn %}\n\n<html>\n <head>\n {% unicorn_scripts %}\n </head>\n <body>\n {% csrf_token %}\n\n {% unicorn 'COMPONENT_NAME' %}\n </body>\n</html>\n```\n\n## [Example todo component](https://www.django-unicorn.com/examples/todo)\n\nThe `unicorn:` attributes bind the element to data and can also trigger methods by listening for events, e.g. `click`, `input`, `keydown`, etc.\n\n```html\n<!-- todo.html -->\n\n<div>\n <form unicorn:submit.prevent=\"add\">\n <input type=\"text\"\n unicorn:model.defer=\"task\"\n unicorn:keyup.escape=\"task=''\"\n placeholder=\"New task\" id=\"task\"></input>\n </form>\n <button unicorn:click=\"add\">Add</button>\n <button unicorn:click=\"$reset\">Clear all tasks</button>\n\n <p>\n {% if tasks %}\n <ul>\n {% for task in tasks %}\n <li>{{ task }}</li>\n {% endfor %}\n </ul>\n {% else %}\n No tasks \ud83c\udf89\n {% endif %}\n </p>\n</div>\n```\n\n```python\n# todo.py\n\nfrom django_unicorn.components import UnicornView\nfrom django import forms\n\nclass TodoForm(forms.Form):\n task = forms.CharField(min_length=2, max_length=20, required=True)\n\nclass TodoView(UnicornView):\n task = \"\"\n tasks = []\n\n def add(self):\n if self.is_valid():\n self.tasks.append(self.task)\n self.task = \"\"\n```\n\n## \u2728 Wait, is this magic?\n\nSort of! At least it might feel like it. \ud83e\udd29\n\n1. `Unicorn` progressively enhances a normal Django view, so the initial render is fast and great for SEO.\n2. `Unicorn` binds to the elements you specify and automatically makes AJAX calls when needed.\n3. `Unicorn` seamlessly updates the DOM when the HTML changes.\n\nFocus on building regular Django templates and Python classes without needing to switch to another language or use unnecessary infrastructure.\n\n## \ud83e\udd2f But wait, there's more!\n\nAs if that wasn't enough, other features include:\n\n- [Form Validation](https://www.django-unicorn.com/docs/validation/)\n- [Redirection](https://www.django-unicorn.com/docs/redirecting/)\n- [Loading States](https://www.django-unicorn.com/docs/loading-states/)\n- [Dirty States](https://www.django-unicorn.com/docs/dirty-states/)\n- [Partial Updates](https://www.django-unicorn.com/docs/partial-updates/)\n- [Polling](https://www.django-unicorn.com/docs/polling/)\n- [Scroll Triggering](https://www.django-unicorn.com/docs/visibility/)\n- [Messages](https://www.django-unicorn.com/docs/messages/)\n- [Javascript Integration](https://www.django-unicorn.com/docs/advanced/)\n\n## \ud83d\udcd6 Dig In\n\n- [Documentation](https://www.django-unicorn.com/docs/)\n- [Examples](https://www.django-unicorn.com/examples/todo)\n- [Screencasts](https://www.django-unicorn.com/screencasts/installation)\n- [Changelog](https://www.django-unicorn.com/docs/changelog/)\n\n## \u2764\ufe0f Support\n\nThis project is supported by GitHub [Sponsors](https://github.com/sponsors/adamghill) and [Digital Ocean](https://m.do.co/c/617d629f56c0).\n\n<p>\n <a href=\"https://m.do.co/c/617d629f56c0\">\n <img src=\"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg\" width=\"201px\">\n </a>\n</p>\n\n## \ud83d\udd27 Contributors\n\nCheck out [this guide](DEVELOPING.md) for more details on how to contribute.\n\nThanks to the following wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)) who have helped build `Unicorn`.\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n <tbody>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://adamghill.com\"><img src=\"https://avatars0.githubusercontent.com/u/317045?v=4?s=100\" width=\"100px;\" alt=\"Adam Hill\"/><br /><sub><b>Adam Hill</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=adamghill\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=adamghill\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://python3.ninja\"><img src=\"https://avatars1.githubusercontent.com/u/44167?v=4?s=100\" width=\"100px;\" alt=\"Andres Vargas\"/><br /><sub><b>Andres Vargas</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=zodman\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://iskra.ml\"><img src=\"https://avatars3.githubusercontent.com/u/6555851?v=4?s=100\" width=\"100px;\" alt=\"Eddy Ernesto del Valle Pino\"/><br /><sub><b>Eddy Ernesto del Valle Pino</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=edelvalle\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://www.linkedin.com/in/yaser-al-najjar-429b9096/\"><img src=\"https://avatars3.githubusercontent.com/u/10493809?v=4?s=100\" width=\"100px;\" alt=\"Yaser Al-Najjar\"/><br /><sub><b>Yaser Al-Najjar</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=yaseralnajjar\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/sbidy\"><img src=\"https://avatars.githubusercontent.com/u/1077364?v=4?s=100\" width=\"100px;\" alt=\"Stephan Traub\"/><br /><sub><b>Stephan Traub</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=sbidy\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/frbor\"><img src=\"https://avatars.githubusercontent.com/u/2320183?v=4?s=100\" width=\"100px;\" alt=\"Fredrik Borg\"/><br /><sub><b>Fredrik Borg</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=frbor\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=frbor\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/mbacicc\"><img src=\"https://avatars.githubusercontent.com/u/46646960?v=4?s=100\" width=\"100px;\" alt=\"mbacicc\"/><br /><sub><b>mbacicc</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=mbacicc\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://ambient-innovation.com\"><img src=\"https://avatars.githubusercontent.com/u/3176075?v=4?s=100\" width=\"100px;\" alt=\"Ron\"/><br /><sub><b>Ron</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=GitRon\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Franziskhan\"><img src=\"https://avatars.githubusercontent.com/u/86062014?v=4?s=100\" width=\"100px;\" alt=\"Franziskhan\"/><br /><sub><b>Franziskhan</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=Franziskhan\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/joshiggins\"><img src=\"https://avatars.githubusercontent.com/u/5124298?v=4?s=100\" width=\"100px;\" alt=\"Josh Higgins\"/><br /><sub><b>Josh Higgins</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=joshiggins\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=joshiggins\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/MayasMess\"><img src=\"https://avatars.githubusercontent.com/u/51958712?v=4?s=100\" width=\"100px;\" alt=\"Amayas Messara\"/><br /><sub><b>Amayas Messara</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=MayasMess\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://www.apoorvapandey.com\"><img src=\"https://avatars.githubusercontent.com/u/21103831?v=4?s=100\" width=\"100px;\" alt=\"Apoorva Pandey\"/><br /><sub><b>Apoorva Pandey</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=apoorvaeternity\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=apoorvaeternity\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://www.nerdocs.at\"><img src=\"https://avatars.githubusercontent.com/u/2955584?v=4?s=100\" width=\"100px;\" alt=\"Christian Gonz\u00e1lez\"/><br /><sub><b>Christian Gonz\u00e1lez</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=nerdoc\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=nerdoc\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/robwa\"><img src=\"https://avatars.githubusercontent.com/u/4658937?v=4?s=100\" width=\"100px;\" alt=\"robwa\"/><br /><sub><b>robwa</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=robwa\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=robwa\" title=\"Tests\">\u26a0\ufe0f</a></td>\n </tr>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://medium.com/@pbadeer\"><img src=\"https://avatars.githubusercontent.com/u/467756?v=4?s=100\" width=\"100px;\" alt=\"Preston Badeer\"/><br /><sub><b>Preston Badeer</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=pbadeer\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/stat1c-void\"><img src=\"https://avatars.githubusercontent.com/u/9142081?v=4?s=100\" width=\"100px;\" alt=\"Sergei\"/><br /><sub><b>Sergei</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=stat1c-void\" title=\"Documentation\">\ud83d\udcd6</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=stat1c-void\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=stat1c-void\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/bazubii\"><img src=\"https://avatars.githubusercontent.com/u/12039914?v=4?s=100\" width=\"100px;\" alt=\"bazubii\"/><br /><sub><b>bazubii</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=bazubii\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=bazubii\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/dancaron\"><img src=\"https://avatars.githubusercontent.com/u/535851?v=4?s=100\" width=\"100px;\" alt=\"Dan Caron\"/><br /><sub><b>Dan Caron</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=dancaron\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://hauntsaninja.github.io/\"><img src=\"https://avatars.githubusercontent.com/u/12621235?v=4?s=100\" width=\"100px;\" alt=\"Shantanu\"/><br /><sub><b>Shantanu</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=hauntsaninja\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/regoawt\"><img src=\"https://avatars.githubusercontent.com/u/49868464?v=4?s=100\" width=\"100px;\" alt=\"regoawt\"/><br /><sub><b>regoawt</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=regoawt\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=regoawt\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lassebomh\"><img src=\"https://avatars.githubusercontent.com/u/31809070?v=4?s=100\" width=\"100px;\" alt=\"Lasse H. Bomholt\"/><br /><sub><b>Lasse H. Bomholt</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=lassebomh\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://marteydodoo.com\"><img src=\"https://avatars.githubusercontent.com/u/49076?v=4?s=100\" width=\"100px;\" alt=\"Martey Dodoo\"/><br /><sub><b>Martey Dodoo</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=martey\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://digitalpinup.art\"><img src=\"https://avatars.githubusercontent.com/u/1392097?v=4?s=100\" width=\"100px;\" alt=\"Pierre\"/><br /><sub><b>Pierre</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=bloodywing\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://roman.pt\"><img src=\"https://avatars.githubusercontent.com/u/75075?v=4?s=100\" width=\"100px;\" alt=\"Roman Imankulov\"/><br /><sub><b>Roman Imankulov</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=imankulov\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=imankulov\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/rhymiz\"><img src=\"https://avatars.githubusercontent.com/u/7029352?v=4?s=100\" width=\"100px;\" alt=\"Lemi Boyce\"/><br /><sub><b>Lemi Boyce</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=rhymiz\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://jacksund.github.io\"><img src=\"https://avatars.githubusercontent.com/u/47992949?v=4?s=100\" width=\"100px;\" alt=\"Jack Sundberg\"/><br /><sub><b>Jack Sundberg</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=jacksund\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/siliconcow\"><img src=\"https://avatars.githubusercontent.com/u/908362?v=4?s=100\" width=\"100px;\" alt=\"siliconcow\"/><br /><sub><b>siliconcow</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=siliconcow\" title=\"Code\">\ud83d\udcbb</a> <a href=\"https://github.com/adamghill/django-unicorn/commits?author=siliconcow\" title=\"Tests\">\u26a0\ufe0f</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://rahma.hashnode.dev/\"><img src=\"https://avatars.githubusercontent.com/u/35562131?v=4?s=100\" width=\"100px;\" alt=\"Akintola Rahmat\"/><br /><sub><b>Akintola Rahmat</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=mihrab34\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://www.pythonbynight.com\"><img src=\"https://avatars.githubusercontent.com/u/46942991?v=4?s=100\" width=\"100px;\" alt=\"Mario Munoz\"/><br /><sub><b>Mario Munoz</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=tataraba\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/epw1624\"><img src=\"https://avatars.githubusercontent.com/u/112768709?v=4?s=100\" width=\"100px;\" alt=\"Emily Wood\"/><br /><sub><b>Emily Wood</b></sub></a><br /><a href=\"https://github.com/adamghill/django-unicorn/commits?author=epw1624\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A magical full-stack framework for Django.",
"version": "0.61.0",
"project_urls": {
"Documentation": "https://www.django-unicorn.com/docs/",
"Funding": "https://github.com/sponsors/adamghill",
"Homepage": "https://www.django-unicorn.com",
"Repository": "https://github.com/adamghill/django-unicorn/"
},
"split_keywords": [
"django",
" python",
" javascript",
" fullstack"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "983fa0718c461963d99f7d8bf4cc0af65429486dba8208c1f841cfd40380e8b8",
"md5": "96a98225b03146a384ce3ff8cd3ceb62",
"sha256": "e65adb256a5aed8b3634af4296ddb70ea9fa3ca9682a3cd7e4fa5e79a8bd88a4"
},
"downloads": -1,
"filename": "django_unicorn-0.61.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "96a98225b03146a384ce3ff8cd3ceb62",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.8",
"size": 96283,
"upload_time": "2024-07-26T13:22:57",
"upload_time_iso_8601": "2024-07-26T13:22:57.846833Z",
"url": "https://files.pythonhosted.org/packages/98/3f/a0718c461963d99f7d8bf4cc0af65429486dba8208c1f841cfd40380e8b8/django_unicorn-0.61.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c09c0be999c659386e424e9868d456cead2d324667987aee2381390edb8b8366",
"md5": "968babeae58012acaa4f1c0381d07cbc",
"sha256": "dd3ef5c610785bb69a770926cef4096993e236a1b080e695d8e2ee3aa5f4f603"
},
"downloads": -1,
"filename": "django_unicorn-0.61.0.tar.gz",
"has_sig": false,
"md5_digest": "968babeae58012acaa4f1c0381d07cbc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.8",
"size": 85060,
"upload_time": "2024-07-26T13:22:59",
"upload_time_iso_8601": "2024-07-26T13:22:59.940998Z",
"url": "https://files.pythonhosted.org/packages/c0/9c/0be999c659386e424e9868d456cead2d324667987aee2381390edb8b8366/django_unicorn-0.61.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-26 13:22:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sponsors",
"github_project": "adamghill",
"github_not_found": true,
"lcname": "django-unicorn"
}