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 bu sayfanın 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 girişin name değerine göre anahtarlayarak request.POST içinden okur.

Django bir kural daha ekler. Başka bir web sitesi, sitenize POST isteği gönderen bir formu gizleyebilir ve ziyaretçinin tarayıcısı bu formu çerezleriyle gönderebilir: buna CSRF adı verilen bir saldırı denir. Bu nedenle Django, kendi sayfanızdan alınan gizli bir belirteç içermeyen tüm POST isteklerini 403 Forbidden ile reddeder. Formun içindeki {% csrf_token %} bu belirteci ekler. 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 değeriyle eşleşen girdiyi adlandırır; type="date" ise takvim gösterir.

challenge icon

Görev

Kolay

new_event.html dosyasında, görünümün beklediği formu yaz:

  • Alanlarını POST ile gönderir ve CSRF belirtecini taşır.
  • Görünümün okuduğu her değer için etiketli bir giriş alanı. Tarih giriş alanı bir takvim açar.
  • Bir gönder düğmesi.

Çalıştır'a bas, bir etkinlik ekle, ardından ana sayfayı aç.

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