30 Haziran 2016 Perşembe

ÖRNEK4: Dropdown'da seçilen ürünü tablodan sorgulayıp form üzerindeki text'e fiyatını yazsın:


var _id = $(this).val(); ile seçilen değerin id'si alınır ve ajax içerisinden 
url: '/ajax3-mesaj?'+ "id=" + _id, ile view'e gönderilir.View 'de 
gelen_id=request.GET['id'] ile id değeri alınır, data = Urun.objects.get(id=gelen_id)
ile tablodan sorgu yapılır , data.fiyat ile istenilen değer html sayfaya dönderilir. 

urls.py
----------------------------------------
url(r'^ajax3-sayfa/', yonetim.views.ajax3_sayfa),
url(r'^ajax3-mesaj', yonetim.views.ajax3_mesaj),





views.py
-----------------------------------------
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render


from .models import *
from .forms import *

def ajax3_sayfa(request):
    urunler = Urun.objects.all()
    return render(request, 't3.html', {'urunler':urunler})

def ajax3_mesaj(request):
    gelen_id=request.GET['id']
    data = Urun.objects.get(id=gelen_id)
    return HttpResponse(data.fiyat, content_type = "application/text")


tempalte/t3.html
--------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
        $('select[name=mySelect]').change(function(){
            var _id = $(this).val();
            $.ajax({
                cache: false,
                url: '/ajax3-mesaj?'+ "id=" + _id,
                type: 'GET',
                dataType: "html",
                success: function (result) {
                    $('#txt2').val(result);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert('Error during process: \n' + xhr.responseText);
                }
            });
        });
    });
    </script>
</head>
<body>
    Ürün Seç:
    <select name="mySelect">
            <option>--</option>
            {% for row in urunler %}
                <option value="{{row.id}}" >{{ row.ad}}</option>
            {% endfor %}
    </select> </td><br>
    Fiyatı:<input type="text" id="txt2" name="txt2" /><br/>
</body>
</html>
DJANGO AJAX KULLANIMI:

ÖRNEK1:Form üzerinde butona tıkladığı zamana mesaj versin:


urls.py
----------------------------------------
url(r'^ajax-sayfa/', yonetim.views.ajax_sayfa),
url(r'^ajax-kod', yonetim.views.ajax_kod),



views.py
-----------------------------------------
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render


def ajax_sayfa(request):
    return render_to_response('t0.html')

def ajax_kod(request):
    return HttpResponse("Ajax mesaj örneği");


tempalte/t0.html
--------------------------------
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
          $('#btn').click(function(){
                $.ajax({
                    type:'get',
                    url:'/ajax-kod/',
                    success:function(veri){
                        alert(veri);
                    }
                });
            });
        });
    </script>
</head>
<body>
    <input type="button" id="btn" value="gonder"/>
</body>
</html>


ÖRNEK2:Form üzerinde text'e girilen değeri parametre olarak göndersin ve bu değeri form üzerinde div elementinde göstersin:

urls.py
----------------------------------------
url(r'^ajax1-sayfa/', yonetim.views.ajax1_sayfa),
url(r'^ajax1-kod', yonetim.views.ajax1_kod),



views.py
-----------------------------------------
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render


def ajax1_sayfa(request):
    return render_to_response('t1.html')

def ajax1_kod(request):
    data=request.GET['prm1']
    return HttpResponse(data, content_type = "application/text")


tempalte/t1.html
--------------------------------
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
        $('#btn1').click(function () {
            var _prm1 = $("#txt1").val();
            $.ajax({
                cache: false,
                url: '/ajax1-mesaj?'+ "prm1=" + _prm1,
                type: 'GET',
                dataType: "html",
                success: function (result) {
                    //alert("sss");
                    $('#divgc').html(result);

                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert('Error during process: \n' + xhr.responseText);
                }
            });
        });
    });
    </script>
</head>
<body>
mesaj gir:
<input type="text" id="txt1" name="txt1"/><br/>
<input type="button" id="btn1" value="gonder"/>
<div id="divgc" , class="sag"></div>

</body>
</html>


Eğer gelen veri div değil form üzerinde başka bir text'e yazdırılması istenirse bu durumda t1.html:

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
        $('#btn1').click(function () {
            var _prm1 = $("#txt1").val();
            $.ajax({
                cache: false,
                url: '/ajax1-mesaj?'+ "prm1=" + _prm1,
                type: 'GET',
                dataType: "html",
                success: function (result) {
                    //alert("sss");
                    $('#txt2').val(result);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert('Error during process: \n' + xhr.responseText);
                }
            });
        });
    });
    </script>
</head>
<body>
mesaj gir:
<input type="text" id="txt1" name="txt1"/><br/>
<input type="button" id="btn1" value="gonder"/>
gelen değer:<input type="text" id="txt2" name="txt2" /><br/>

</body>
</html>

ÖRNEK3:Form üzerinde text'e girilen id'yi parametre olarak göndersin ve bu değeri id'yi tablodan sorgulayıp ad olarak text'e yazsın:
Urun tablsoundan id yi sorgulayıp ürünün adını getirir:

urls.py
----------------------------------------
url(r'^ajax2-sayfa/', yonetim.views.ajax2_sayfa),
url(r'^ajax2-mesaj', yonetim.views.ajax2_mesaj),



views.py
-----------------------------------------
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render


def ajax2_sayfa(request):
    return render_to_response('t2.html')

def ajax2_mesaj(request):
    gelen_id=request.GET['prm1']
    data = Urun.objects.get(id=gelen_id)
    return HttpResponse(data.ad, content_type = "application/text")


tempalte/t2.html
--------------------------------
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
        $('#btn1').click(function () {
            var _prm1 = $("#txt1").val();
            $.ajax({
                cache: false,
                url: '/ajax2-mesaj?'+ "prm1=" + _prm1,
                type: 'GET',
                dataType: "html",
                success: function (result) {
                    $('#txt2').val(result);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert('Error during process: \n' + xhr.responseText);
                }
            });
        });
    });
    </script>
</head>
<body>
mesaj gir:
<input type="text" id="txt1" name="txt1"/><br/>
<input type="button" id="btn1" value="gonder"/>
gelen değer:<input type="text" id="txt2" name="txt2" /><br/>


</body>
</html>





24 Haziran 2016 Cuma

HTML DROPDOWN LİST:

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>


TABLODAN HTML DROPDOWN LİSTSESİNİ DOLDURMA:


model.py
-----------------------------------------------------------------------
from django.db import models
from django import forms
from yonetim.models import *
from django.forms import ModelForm

class Personel(models.Model):
    adi = models.CharField(max_length=50)
    soyadi = models.CharField(max_length=50)


class PersonelForm(ModelForm):
    class Meta:
        model = Personel
        fields = ('adi','soyadi')

views.py
--------------------------------------------------------------------------
def per_list(request):
    personeller= Personel.objects.all()
    return render(request, 'per_list.html', {'personeller':personeller})


urls.py
---------------------------------------------------------------------------
url(r'^per-list/',yonetim.views.per_list),



template/per_list.html
---------------------------------------------------------------------------

<select name="dropdown">
    <option selected="selected" disabled>--</option>
    {% for row in personeller %}
        <option>{{ row.adi }} {{ row.soyadi}}</option>

 {% endfor %}
</select>







23 Haziran 2016 Perşembe

DJANGO PROJESİ OLUŞTURMA:

1-)Adı proje1 olsun.komut satırından
django-admin startproject proje1

2-)uygulamayı oluşturmak için komut satırından
cd proje1
ile proje klasörüne gir

python manage.py startapp yonetim



DJANGO PROJESİNİ ÇALIŞTIRMA:

komut satırından proje klasörüne gir
cd proje1

ardından projeyi çalıştır:
python manage.py runserver


istediğimiz portu çalıştırma

python manage.py runserver 127.0.0.1:7458

DJANGO MIGRATION:

models.py'de modeller oluşturulduktan sonra ya da model alan tipleri değiştirildiğinde, veritabanına yansıma için

proje klasörü içinde iken komut satırından sırayla:

python manage.py makemigrations
python manage.py migrate

DJANGO ADMIN PANELİ TÜRKÇE YAPMA:

urls.py'de
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

olan satırları

LANGUAGE_CODE = 'tr-TR'
TIME_ZONE = 'Europe/Istanbul'

yapın.


İNDİRİLEN PAKETİ DERLEYEREK PYTHON'A YÜKLEME:
python setup.py build
python setup.py install


DJANGO TEMPLATE(WEB SAYFA) GÖRÜNTÜLENMESİNDE KULLANICI GİRİŞİNİ ZORUNLU HALE GETİRME:

views.py'de herhangi bir def üzerinde @login_required tanımlanırsa browserden girilen url ile sayfa açılmaz,kullanıcının login olmasını ister:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):



DJANGO ANA SAYFA BELİRTME:

browserr'de  http://localhost:8000/ yazdığımda direk ana sayfa açılsın.Bunun için

urls.py
------------------------------------------
url(r'^$',yonetim.views.anasayfa),

yonetim/views.py
------------------------
def anasayfa(request):
    return render_to_response('index.html',locals())


Eğer önce kullanıcı giriş sayfası ordan ana sayfaya gitmesi istenirse

yonetim/views.py
------------------------
@login_required
def anasayfa(request):
    return render_to_response('index.html',locals())

yapın.

SUPERUSER OLUŞTURMA:
projenin olduğu dizinin içinden komut satırından

>python manage.py createsuperuser
>>>UserName:
>>>Email:
>>>Password:
>>>Password(again):


KULLANICI ŞİFRESİ DEĞİŞTİRME:
projenin olduğu dizinin içinden komut satırından

>python manage.py shell
>>>from django.contrib.auth.models import User
>>>k = User.objects.get(username='ali')
>>>k.set_password('123456')
>>>k.save()


DJANGO DEBUG MODUNU İPTAL ETME:

Django projesi yayına alınacağı zaman debug iptal moduna alınmalı.

settings.py
------------------------------------ 
DEBUG = False
ALLOWED_HOSTS = ['localhost','127.0.0.1']

yapın

settings.py dosyasında tanımlı değişkenleri views.py de kullanma:

from django.conf import settings

def test(request):
      s =settings.STATIC_ROOT


template(html) tabloda True/False gözüken alanı string formatta gösterme:
{{ bool_var|yesno:"Agree,Disagree" }}
<tr>{{ row.durum|yesno:"Aktif,Pasif" }}</tr>

template(html) tabloda dd/mm/yyyy şeklinde kısa tarih formatı gösterme:

<tr>{{ row.birthday|date:"d/m/Y" }}</tr>
django template (html) tablo da satırlarda None yazısını kaldırma:

<tr>{{ row.end_date|default_if_none:'' }}</tr>


django email gonderme:

https://godjango.com/19-using-templates-for-sending-emails/