Bir POST Formu
Coddy'nin Django Journey'sinin Formlar bölümünün bir parçası. Ders 2 / 20.
/events/new/ sayfası ve görünümü hazır, ancak sayfada etkinlik eklemek için bir form yok. Verileri değiştiren bir formda method="post" kullanılır: tarayıcı alanları URL'de değil, isteğin gövdesinde gönderir. Görünüm, bunları her girdinin name değeriyle anahtarlanmış olarak request.POST üzerinden okur.
Django ayrıca her POST formunu korur. Başka bir web sitesi, sitene POST gönderen bir formu gizleyebilir ve ziyaretçinin tarayıcısı bu formu çerezleriyle birlikte gönderebilir. Bu saldırıya siteler arası istek sahteciliği denir; kısaca CSRF. Bu nedenle Django, kendi sayfandan gelen gizli bir token olmadan yapılan tüm POST isteklerini 403 Forbidden hatasıyla reddeder. Formun içindeki {% csrf_token %} bu tokenı yazar. Bir bülten formu:
<form method="post">
{% csrf_token %}
<label for="email">Email</label>
<input id="email" name="email" type="email">
<button type="submit">Subscribe</button>
</form>Bir <label>, for değeri id ile eşleşen girdiyi adlandırır; type="date" ise takvim gösterir.
Görev
Kolayevents/templates/events/new_event.html içinde {# Write the form here #} ifadesini bir formla değiştir.
method="post"kullan ve ilk sıraya{% csrf_token %}koy. Bu olmadan Django formu 403 hatasıyla reddeder.title,date(type="date"ile) veplaceiçin etiketli birer giriş, ardından bir gönderme düğmesi ekle.
Bir etkinlik ekle, sonra Tüm etkinlikler'e bas: etkinlik listede yer alır.
Kendin dene
{% extends "events/base.html" %}
{% block title %}Add an event{% endblock %}
{% block content %}
<h1>Add an event</h1>
{# Formu buraya yazın #}
{% endblock %}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Formlar bölümündeki tüm dersler
Kendi başına pratik yap: Django playground