Menu
CoddyTech

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.

challenge icon

Görev

Kolay

events/templates/events/new_event.html içinde {# Write the form here #} ifadesini bir formla değiştir.

  1. method="post" kullan ve ilk sıraya {% csrf_token %} koy. Bu olmadan Django formu 403 hatasıyla reddeder.
  2. title, date (type="date" ile) ve place iç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 %}
quiz iconKendini test et

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