Edit
Generic editing views
NOTE
some of the examples in this page assumes an Author model has been defined as follows in myapp/models.py
from django.db import models
from django.urls import reverse
class Author(models.Model):
name = models.CharField(max_length=200)
def get_absolute_url(self):
return reverse("author-detail", kwargs={"pk": self.pk})
AsyncFormView
AsyncFormView works like django's FormView
but the inheritance tree has changed to work asynchronously.
Ancestors (MRO):
- django-async-extensions.views.generic.base.AsyncTemplateResponseMixin
- django.views.generic.base.TemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseFormView
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
Example myapp/forms.py
from django import forms
class ContactForm(forms.Form):
name = forms.CharField()
message = forms.CharField(widget=forms.Textarea)
def send_email(self):
# send some email
pass
Example myapp/views.py
from myapp.forms import ContactForm
from django_async_extensions.views.generic.edit import AsyncFormView
class ContactFormView(AsyncFormView):
template_name = "contact.html"
form_class = ContactForm
success_url = "/thanks/"
async def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.send_email()
return await super().form_valid(form)
Example myapp/contact.html
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Send message">
</form>
AsyncCreateView
AsyncCreateView works similar to django's CreateView
if no form is specified for this to view, AsyncModelForm is used by default, you can change this behaviour by specifying base_form_classin the view.
any form you use with this view needs to define a asave() method.
note that form_class and base_form_class are different:
form_class is the form you design to work with your data,
base_form_class is used to make a default form when no form_class is specified.
also the inheritance tree is different to support async operation.
Ancestors (MRO):
- django-async-extensions.views.generic.detail.AsyncSingleObjectTemplateResponseMixin
- django-async-extensions.views.generic.base.AsyncTemplateResponseMixin
- django.views.generic.base.TemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseCreateView
- django_async_extensions.views.generic.edit.AsyncModelFormMixin
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
Example myapp/views.py
from django_async_extensions.views.generic.edit import AsyncCreateView
from myapp.models import Author
class AuthorCreateView(AsyncCreateView):
model = Author
fields = ["name"]
Example myapp/author_form.html
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
Example using a different model form as a factory:
from django_async_extensions.views.generic.edit import AsyncCreateView
from myapp.models import Author
from myapp.forms import ModelForm
class AuthorCreateView(AsyncCreateView):
model = Author
fields = ["name"]
base_form_class = ModelForm
AsyncUpdateView
AsyncUpdateView works similar to django's UpdateView
if no form is specified for this to view, AsyncModelForm is used by default, you can change this behaviour by specifying base_form_classin the view.
any form you use with this view needs to define a asave() method.
note that form_class and base_form_class are different:
form_class is the form you design to work with your data,
base_form_class is used to make a default form when no form_class is specified.
also the inheritance tree is different to support async operation.
Ancestors (MRO):
- django-async-extensions.views.generic.detail.AsyncSingleObjectTemplateResponseMixin
- django-async-extensions.views.generic.base.AsyncTemplateResponseMixin
- django.views.generic.base.TemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseUpdateView
- django_async_extensions.views.generic.edit.AsyncModelFormMixin
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
Example myapp/views.py
from django_async_extensions.views.generic.edit import AsyncUpdateView
from myapp.models import Author
class AuthorCreateView(AsyncUpdateView):
model = Author
fields = ["name"]
Example myapp/author_form.html
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
Example using a different model form as a factory:
from django_async_extensions.views.generic.edit import AsyncUpdateView
from myapp.models import Author
from myapp.forms import ModelForm
class AuthorCreateView(AsyncUpdateView):
model = Author
fields = ["name"]
base_form_class = ModelForm
AsyncDeleteView
AsyncDeleteView works similar to django's DeleteView
but it's been modified to work as an async view.
Ancestors (MRO):
- django-async-extensions.views.generic.detail.AsyncSingleObjectTemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseDeleteView
- django_async_extensions.views.generic.edit.AsyncDeletionMixin
- django_async_extensions.views.generic.edit.AsyncFormView
- django-async-extensions.views.generic.base.AsyncTemplateResponseMixin
- django.views.generic.base.TemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseFormView
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.detail.AsyncBaseDetailView
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
Base Class
AsyncBaseFormView
A base view for displaying a form. It is not intended to be used directly,
but rather as a parent class of the django_async_extensions.views.generic.edit.AsyncFormView or other views displaying a form.
similar to django's BaseFormView but the ancestors are different.
Ancestors (MRO):
- django_async_extensions.views.generic.edit.AsyncBaseFormView
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
AsyncBaseCreateView
A base view for creating a new object instance. It is not intended to be used directly, but rather as a parent class of the django_async_extensions.views.generic.edit.AsyncCreateView.
similar to django's BaseCreateView but asyncified.
Ancestors (MRO):
- django_async_extensions.views.generic.edit.AsyncModelFormMixin
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
AsyncBaseUpdateView
A base view for updating an object instance. It is not intended to be used directly, but rather as a parent class of the django_async_extensions.views.generic.edit.AsyncUpdateView.
similar to django's BaseUpdateView but asyncified.
Ancestors (MRO):
- django_async_extensions.views.generic.edit.AsyncModelFormMixin
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View
AsyncBaseDeleteView
A base view for deleting an object instance. It is not intended to be used directly, but rather as a parent class of the django_async_extensions.views.generic.edit.AsyncDeleteView.
similar to django's BaseDeleteView but asyncified.
Ancestors (MRO):
- django_async_extensions.views.generic.edit.AsyncDeletionMixin
- django_async_extensions.views.generic.edit.AsyncFormView
- django-async-extensions.views.generic.base.AsyncTemplateResponseMixin
- django.views.generic.base.TemplateResponseMixin
- django_async_extensions.views.generic.edit.AsyncBaseFormView
- django_async_extensions.views.generic.edit.AsyncFormMixin
- django_async_extensions.views.generic.detail.AsyncBaseDetailView
- django_async_extensions.views.generic.detail.AsyncSingleObjectMixin
- django_async_extensions.views.generic.base.AsyncContextMixin
- django_async_extensions.views.generic.edit.AsyncProcessFormMixin
- django_async_extensions.views.generic.base.AsyncView
- django.views.generic.base.View