#03-Django Membuat Aplikasi

Sebelumnya anda harus tau  perbedaan antara projek dan aplikasi? Sebuah aplikasi adalah aplikasi Jaringan yang melakukan sesuatu — misalnya, sebuah sistem Polls yang akan dibuat nanti. Sebuah proyek adalah kumpulan dari konfigurasi dan aplikasi-aplikasi untuk situs jaringan tertentu. Sebuah projek dapat mengandung banyak aplikasi. Sebuah aplikasi dapat di beberapa proyek.

Kondisi

  • Project myapp sudah dibuat

Aplikasi Polls(pooling)

Masih di direktori virtualenv sebelumnya new_version/myapp. Buat app polls dengan mengetikan perintah berikut :

python manage.py startapp polls
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

View

Buka file polls/views.py masukan kode python sbb:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Route

Buka file myapp/polls/urls.py masukan kode sbb:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

Pada file myapp/urls.py masukan kode sbb :

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Test

Kembali ke folder myapp Jalankan project dengan mengetik perintah sbb:

python manage.py runserver
Web Browser

Model

Pada Aplikasi Polls kita akan membuat 2 model yaitu Question dan Choice

  • Question memiliki 2 kolom question dan pub_date.
  • Choice memiliki 2 kolom choise dan vote

Buka file polls/model.py, masukan kode sbb:

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

Activating Model

Tambahkan baris berikut pada myapp/settings.py

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Jalankan perintah berikut pada terminal

python manage.py makemigrations polls
polls/migrations/0001_initial.py
python manage.py sqlmigrate polls 0001

Migrate Model

python manage.py migrate

Buka database anda akan ada table baru seperti gambar berikut :

polls_choice & polls_question

Shell API

Masuk ke shell interactive python untuk berinteraksi dengan aplikasi polls

python manage.py shell
Python interactive shell

Create/Update

>>> from polls.models import Choice, Question  # Import model classes yang sudah dibuat.

# table Question kosong.
>>> Question.objects.all()
<QuerySet []>

# Membuat object Question baru.
# Import timezone untuk digunakan pada pub_date.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())

# Menyimpan object Question ke database menggunakan command save().
>>> q.save()

# Setelah disimpan q.akan memiliki id(auto increment).
>>> q.id
1

# Membaca kolom lain pada object yang disimpan.
>>> q.question_text
"What's new?"
>>> q.pub_date
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)

# Mengubah isi kolom, lalu ketik command save().
>>> q.question_text = "What's up?"
>>> q.save()

# objects.all() menampilkan isi keseluruhan table question.
>>> Question.objects.all()
<QuerySet [<Question: Question object (1)>]>
isi table polls_question

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>