CreateView och UpdateView
Skapa sidor för att lägga till och redigera utifrån en modell
CreateView och UpdateView är en gratis lektion i Django Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Django Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Django Academy innehåller totalt 4 lektioner.
Sidor som skriver data
Att visa data är bara halva arbetet. För att lägga till och redigera poster använder ni CreateView och UpdateView.
Möt CreateView
CreateView bygger en sida för att lägga till data: den renderar ett formulär, validerar inmatningen och sparar en ny post åt er.
Ett formulär från fält
Ange vilka fields ni vill ha i CreateView, så genererar den ett motsvarande formulär direkt från modellen.
from django.views.generic import CreateView
class PostCreate(CreateView):
model = Post
fields = ["title", "body"]Formulärets mallnamn
CreateView och UpdateView letar båda som standard efter app/model_form.html, till exempel post_form.html.
Rendera formuläret
I mallen kommer det genererade formuläret in som form, så att ni kan rendera dess fält och en skicka-knapp.
<form method="post">{% csrf_token %}
{{ form.as_p }}
<button>Save</button>
</form>Möt UpdateView
UpdateView fungerar precis som CreateView, men laddar först en befintlig post så att formuläret börjar ifyllt.
Redigera en befintlig post
UpdateView läser en pk från URL:en, hämtar objektet och sparar era ändringar i det.
from django.views.generic import UpdateView
class PostUpdate(UpdateView):
model = Post
fields = ["title", "body"]Vart ni kommer efter att ha sparat
Efter en lyckad sparning omdirigerar vyn. Ange success_url för att bestämma exakt vart användarna ska hamna härnäst.
from django.urls import reverse_lazy
class PostCreate(CreateView):
success_url = reverse_lazy("post_list")Eller låt modellen bestämma
Hoppa över success_url genom att ge din modell en get_absolute_url; vyn omdirigerar dit automatiskt.
def get_absolute_url(self):
return reverse("post_detail", args=[self.pk])Koppla in redigerings-URL:er
Create behöver ingen pk, men update gör det, så dess URL fångar en med as_view() precis som de andra.
path("new/", PostCreate.as_view()),
path("<int:pk>/edit/", PostUpdate.as_view()),Kraften i gemensamma formulär
Eftersom båda återanvänder samma formulär och mall förblir sidorna för att lägga till och redigera konsekventa, med nästan ingen extra kod. 💪
Snabb kontroll
Vad är den huvudsakliga skillnaden mellan CreateView och UpdateView?
Sammanfattning: Create och Update
Du använde CreateView för att lägga till poster och UpdateView för att redigera dem, delade en formulärmall och styrde omdirigeringar med success_url. 🎉
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”CreateView och UpdateView” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Django Academy, inklusive ”CreateView och UpdateView”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Django Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”CreateView och UpdateView”?
Skapa sidor för att lägga till och redigera utifrån en modell Ni övar på Django Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Django Academy?
Du behöver inga förkunskaper. Utbildningen i Django Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”CreateView och UpdateView”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Django Academy-lektionen?
Ja. Varje Django Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- ListView och DetailView
- CreateView och UpdateView
- DeleteView och success_url
- Åsidosätta get_queryset och mallar