24 Mart 2014 Pazartesi

GET ve POST Metodları

Kullanıcıdan veri alırken iki şekilde alabiliriz. Bu yöntemler GET ve POST metodlarıdır. Aralarında bazı farklar vardır. GET ile alınan tüm veriler tarayıcının adres çubuğunda görülür ve yaklaşık olarak 2KB civarında boyut sınırlaması vardır. POST metodu ise verileri tarayıcıya doğrudan gönderdiği için gönderilen veriler adres çubuğunda görünmez. Herhangi bir boyut sınırlaması da yoktur.
GET Metodu
yonetim/views.py dosyasına arama görünümü ekleyelim.
from django.http import *
def Arama(request):
 if request.method == "GET":
  kelime = request.GET['kelime']
  return HttpResponse('Aranan Kelime:  %s' % (kelime))
Tarayıcıdan http://localhost:8000/arama/?kelime=deneme girdiğiniz zaman çıktıyı alacaksınız.
Aranan Kelime: deneme
Burada dikkat etmemiz gereken veriyi request.GET['kelime'] metodu ile aldığımız için eğer kelime girilmemiş ise yani tarayıcıdan http://localhost:8000/arama/ girilirse hata ile karşılaşırız. Burada hata ile karşılaşmamak için request.GET.get('kelime') metodunu kullanmalıyız. Eğer veri girilmedi ise boş değer döndürür.
### views.py
def arama(request):
 if request.method == "GET":
  kelime = request.GET.get('kelime')
  return HttpResponse('Aranan Kelime:  %s' % (kelime))
##Taryıcı adres çubuğu
http://localhost:8000/arama/
### Çıktı
Aranan Kelime: None
Gördüğünüz gibi hata ile karşılaşmadık. Aslında herhangi bir adrese girildiğinde biz işlem yapmasak bile GET metodu çalışır.
POST Metodu
Şimdi POST metodunu anlayabilmek için aynı örneğin form uygulamasını yapalım. Formlara daha ayrıntılı şekilde bakacağız. İlk önce yonetim/sablonlar içerisine get_post.html adında bir şablon oluşturuyoruz.
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<form action="/arama-post/" method="post">
    {% csrf_token %}
    Aranacak kelime : <input type="text" name="kelime" />
    <input type="submit" value="Ara" />
</form>


</body>
</html>
Şimdi yonetim/views.py dosyasına şu görünümü ekliyoruz.
from django.http import *
from django.template import RequestContext
def arama_post(request):
 if request.method == "POST":
  kelime = request.POST['kelime']
  return HttpResponse('Aranan kelime: %s'%(kelime))
 else:
  return render_to_response('get_post.html',context_instance=RequestContext(request))
urls.py
url(r'^arama-post/',yonetim.views.arama_post),
Şimdi tarayıcıdan localhost:8000/arama-post yazarak arama formuna ulaşabilirsiniz. Görünümde yaptığımız işlem eğer POST işlemi yapıldıysa kelimeyi kelime = request.POST['kelime'] satırı ile elde ediyoruz. HttpResponse ile ekrana basıyoruz. Eğer POST işlemi yapılmadıysa get_post.html şablonunu ekrana yazdırıyoruz.
Kaynakça :

2 yorum :