Generiska redigeringsvyer¶
Följande vyer beskrivs på den här sidan och ger en grund för redigering av innehåll:
Se även
Ramverket messages innehåller SuccessMessageMixin
, som underlättar presentationen av meddelanden om lyckade formulärinlämningar.
Observera
Några av exemplen på den här sidan förutsätter att en Author
-modell har definierats på följande sätt i 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})
FormView
¶
- class django.views.generic.edit.FormView¶
En vy som visar ett formulär. Vid fel visas formuläret på nytt med valideringsfel; vid framgång omdirigeras formuläret till en ny URL.
Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Exempel 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 email using the self.cleaned_data dictionary pass
Exempel myapp/views.py:
from myapp.forms import ContactForm from django.views.generic.edit import FormView class ContactFormView(FormView): template_name = "contact.html" form_class = ContactForm success_url = "/thanks/" 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 super().form_valid(form)
Exempel myapp/contact.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Send message"> </form>
- class django.views.generic.edit.BaseFormView¶
En basvy för att visa ett formulär. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till
django.views.generic.edit.FormView
eller andra vyer som visar ett formulär.Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
CreateView
¶
- class django.views.generic.edit.CreateView¶
En vy som visar ett formulär för att skapa ett objekt, visa formuläret igen med valideringsfel (om det finns några) och spara objektet.
Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Attribut
- template_name_suffix¶
Sidan
CreateView
som visas för enGET
-begäran använder etttemplate_name_suffix
på'_form
. Om man t.ex. ändrar detta attribut till'_create_form'
för en vy som skapar objekt för exempelmodellenAuthor
skulle standardnamnettemplate_name
bli'myapp/author_create_form.html'
.
- object¶
När du använder
CreateView
har du tillgång tillself.object
, som är det objekt som skapas. Om objektet inte har skapats ännu kommer värdet att varaNone
.
Exempel myapp/views.py:
from django.views.generic.edit import CreateView from myapp.models import Author class AuthorCreateView(CreateView): model = Author fields = ["name"]
Exempel myapp/author_form.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Save"> </form>
- class django.views.generic.edit.BaseCreateView¶
En basvy för att skapa en ny objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till
django.views.generic.edit.CreateView
.Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Metoder
- get(request, *args, **kwargs)¶
Ställer in den aktuella objektinstansen (
self.object
) tillNone
.
- post(request, *args, **kwargs)¶
Ställer in den aktuella objektinstansen (
self.object
) tillNone
.
UpdateView
¶
- class django.views.generic.edit.UpdateView¶
En vy som visar ett formulär för att redigera ett befintligt objekt, visa formuläret igen med valideringsfel (om det finns några) och spara ändringar i objektet. Här används ett formulär som automatiskt genereras från objektets modellklass (om inte en formulärklass anges manuellt).
Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Attribut
- template_name_suffix¶
Sidan
UpdateView
som visas för enGET
-begäran använder etttemplate_name_suffix
på'_form
. Om man t.ex. ändrar detta attribut till'_update_form'
för en vy som uppdaterar objekt för exempelmodellenAuthor
skulle standardnamnettemplate_name
bli'myapp/author_update_form.html'
.
- object¶
När du använder
UpdateView
har du tillgång tillself.object
, som är det objekt som uppdateras.
Exempel myapp/views.py:
from django.views.generic.edit import UpdateView from myapp.models import Author class AuthorUpdateView(UpdateView): model = Author fields = ["name"] template_name_suffix = "_update_form"
Exempel myapp/author_update_form.html:
<form method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Update"> </form>
- class django.views.generic.edit.BaseUpdateView¶
En basvy för uppdatering av en befintlig objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till
django.views.generic.edit.UpdateView
.Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Metoder
- get(request, *args, **kwargs)¶
Ställer in den aktuella objektinstansen (
self.object
).
- post(request, *args, **kwargs)¶
Ställer in den aktuella objektinstansen (
self.object
).
DeleteView
¶
- class django.views.generic.edit.DeleteView¶
En vy som visar en bekräftelsesida och raderar ett befintligt objekt. Det angivna objektet kommer endast att raderas om förfrågningsmetoden är
POST
. Om denna vy hämtas viaGET
kommer den att visa en bekräftelsesida som bör innehålla ett formulär som POSTAR till samma URL.Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer:
Attribut
- form_class¶
Ärvd från
BaseDeleteView
. Den formulärklass som kommer att användas för att bekräfta begäran. Som standarddjango.forms.Form
, vilket resulterar i ett tomt formulär som alltid är giltigt.Genom att tillhandahålla en egen subklass av
Form
kan du lägga till ytterligare krav, t.ex. en kryssruta för bekräftelse.
- template_name_suffix¶
Sidan
DeleteView
som visas för enGET
begäran använder etttemplate_name_suffix
av'_confirm_delete
. Om man t.ex. ändrar detta attribut till'_check_delete
för en vy som raderar objekt för exempelmodellenAuthor
skulle standardnamnet påtemplate_name
bli'myapp/author_check_delete.html'
.
Exempel myapp/views.py:
from django.urls import reverse_lazy from django.views.generic.edit import DeleteView from myapp.models import Author class AuthorDeleteView(DeleteView): model = Author success_url = reverse_lazy("author-list")
Exempel myapp/author_confirm_delete.html:
<form method="post">{% csrf_token %} <p>Are you sure you want to delete "{{ object }}"?</p> {{ form }} <input type="submit" value="Confirm"> </form>
- class django.views.generic.edit.BaseDeleteView¶
En basvy för att radera en objektinstans. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till
django.views.generic.edit.DeleteView
.Ancestors (MRO)
Denna vy ärver metoder och attribut från följande vyer: