Menulis Project Django App Tahap 2

Tutorial ini dimulai dengan Tutorial 1 . Kita akan melanjutkan Web-poll application dan akan focusl pada Django’s automatically-generated admin site.

Philosophy
Meng-Generate admin sites untuk staff anda atau untuk menambah client, merubah, dan menghapus content ini adalah pekerjaan yang membosankan, karena tidak membutuhkan creativitas. Untuk alasan itu, Django seluruh automates creation dari admin interfaces. Django ditulis dalam newsroom environment, dengan “content publishers” dan public” site. Site managers menggunakan system untuk menambah news stories, events, sports scores, dan lain-lain. dan content ditampilkan pada public site. Django memecahkan masalah membuat unified interface untuk site administrators untuk meng-edit content.

Mengaktifkan Site Admin

Django admin site tidak diaktifkan secara default by default. Untuk mengaktifkan admin site lakukan langkah-langkah sebagai berikut :
  • Hapus tanda # "django.contrib.admin" pada INSTALLED_APPS setting.
  • Jalankan python manage.py syncdb. Maka database perlu dibuat di INSTALLED_APPS, database perlu diupdate.
  • Edit file  mysite/urls.py dan hapus tanda # uncomment sehingga terlihat seperti dibawah ini urls.py :

    from django.conf.urls import patterns, include, url
    
    # Uncomment the next two lines to enable the admin:
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        # Examples:
        # url(r'^$', '{{ project_name }}.views.home', name='home'),
        # url(r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),
    
        # Uncomment the admin/doc line below to enable admin documentation:
        # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    
        # Uncomment the next line to enable the admin:
        url(r'^admin/', include(admin.site.urls)),
    )
    


Start development server

Let’s start the development server dan explore admin site.
Ketikkan perintah dibawah ini untuk menjalankan python server :

python manage.py runserver
 
Buka browser dan ketikkan URL : http://127.0.0.1:8000/admin/


Django admin login screen

Apabila tidak terlihat seperti gambar diatas.
dan ada pesan seperti dibawah ini

ImportError at /admin/
cannot import name patterns
...
 
ada kemungkinan menggunakan versi django yang tidak sama dengan tutorial ini. silahkan install django terbaru.

Sekarang coba login menggunakan superuser account yang dulu pernah ada di tutorial pertama masih ingat ? Tutorial 1 bila anda lupa, diusahakan dibuat dari awal lagi dan mengulan Tutorial 1 :


Django admin index page
Setelah masuk kita dapat menjumpai content, berupa groups, users dan sites. Ini adalah features Django ships secara default.

 

Membuat file admin

Tetapi dimanakan poll app kita? Ko tidak ditampilkan di halaman admin index page.
Ada satu yang belum kita buat, yaitu memperkenalkan Poll objects ke halaman admin interface. Untuk melakukan ini, buatlah file admin.py pada direktori polls dan editlah seperti dibawah ini :

from polls.models import Poll
from django.contrib import admin

admin.site.register(Poll) 
 
Restartlah Django Development Servernya. Namun secara normalnya tidak perlu reboot / di restart cukup browsernya saja yang direfresh.

Explorasi Fungsi Admin

Terlihat sekarang kita sudah memperlihatkan Poll, Sudah tampil di halaman depan django admin.

Django admin index page, now with polls displayed
Click "Polls." Sekarang anda masuk pada "change list" halaman untuk Pools. Pada halaman ini terlihat semua database Polls yang telah kita rubah dan kita pilih. Terlihat 'What's Up ' seperti di tutorial yang pertama.

Polls change list page 
 Click "What's up?" poll untuk mengedit :

Editing form for poll object
Catatan :
  • form is automatically generated dari Poll model.
  • Perbedaan (DateTimeField, CharField) koresponen HTML input widget.
  • DateTimeField mendapat JavaScript shortcuts. Tanggal "Today" shortcut dan calendar popup, dan times  "Now" shortcut dan daftar input.
Di bagian paling bawah terdapat tombol :
  • Save
  • Save and continue editing
  • Save and add another
  • Delete
Apabila nilai "Date published" tidak cocok dengan waktunya maka harap disetting ulang TIME_ZONE setting. ganti dan refresh.


History page for poll object

 

Customize admin form

Dengan beberapa menit kita dapat membuat halaman admin yang tercustomize. Dengan mendaftarkan admin.site.register(Poll), Django secara default membuat formulirnya. Meskipun tampilan admin seperti itu namun dapat bekerja di object django.
Lihat bagaimana alur dan cara kerja program sesungguhnya caranya ganti  admin.site.register(Poll) dengan :

class PollAdmin(admin.ModelAdmin):
    fields = ['pub_date', 'question']

admin.site.register(Poll, PollAdmin) 
 
Maka hasilnya adalah sebagai berikut

Fields have been reordered Terlihat baru 2 field, padahal halaman admin memiliki banyak field,

class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date']}),
    ]

admin.site.register(Poll, PollAdmin) 
 
Sekarang setelah dipisah dengan fieldsets maka tampilan akan terlihat sebagai berikut.

Form has fieldsets now
Anda dapat menyusun HTML class untuk tiap fieldset. Django menyediakan "collapse" class sehingga dapat disembunyikan. Hal ini sangat diperlukan apabila banyak field ada di halaman admin.

class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ] 
 
 
Fieldset is initially collapsed

Customize admin change list

Polls change list page
Secara default, Django menampilkan str() pada setiap object. Tetapi lebih sering terbantu dengan membuat individual fields.untuk membuat hal itu list_display admin option, digunakan

class PollAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question', 'pub_date') 
 
Masih ingat ada field : was_published_recently custom method dari Tutorial 1:

class PollAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question', 'pub_date', 'was_published_recently') 
 
Sekarang terlihat sebagai berikut :


Polls change list page, updated
Untuk membuat tampilan dapat terlihat time zonenya maka kita buat 
pada file models.py attribut sebagai berikut :

class Poll(models.Model):
    # ...
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?' 
 
Kemudian edit admin.py dibawah PollAdmin:

list_filter = ['pub_date'] 
 
sehinga terfilter dengan hari  pub_date field:

Polls change list page, updated
Untuk memberikan Search diatas gunakan sintaks dibawah ini :
search_fields = ['question'] 
 
Terakhir membuat hierarki nya menggunakan :

date_hierarchy = 'pub_date' 
 
 
 

Customize halaman Admin

Sangat jelas dalam membuat "Django administration" pada bagian atas dari halaman admin. Hal ini sangat mudah untuk merubah dan menggunakan Django template system. Django admin dipake oleh Django itu sendiri, dan interfacenya dapat diambil di template bawaan django default.

Buka file (mysite/settings.py, masih ingat kan) lihat TEMPLATE_DIRS setting. TEMPLATE_DIRS digunakan untuk membuat template.
Secara default TEMPLATE_DIRS kosong. sekarang saat nya kita memasukkan template

TEMPLATE_DIRS = (
    '/home/my_username/mytemplates', # Change this to your own directory.
) 
 
Sekarang copy halaman admin/base_site.html dari direktori (django/contrib/admin/templates) ke admin subdirectory menggunakan TEMPLATE_DIRS. Contohnya TEMPLATE_DIRS termasuk '/home/my_username/mytemplates', kemudian copy django/contrib/admin/templates/admin/base_site.html ke /home/my_username/mytemplates/admin/base_site.html. Jangan lupa subdomain admin .

Bila anda kesulitan mencarinya, maka gunakan :
dengan cara gunakan file dibawah ini

python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

Tinggal mengganti Django text dengan nama perushaan anda.

Template ini terdiri dari {% block branding %} dan {{ title }}{% dan {{ tags adalah bagian dari Django's template language. ketika django  admin/base_site.html, nanti kita akan lanjutkan di tutorial ke 3.

Customize admin index page

Secara default, ini akan menampilkan semua aplikasi di INSTALLED_APPS yang telah terdaftar dengan aplikasi admin, dalam urutan abjad. Anda mungkin ingin membuat perubahan besar pada tata letak. Setelah semua, indeks mungkin adalah halaman yang paling penting admin, dan harus mudah digunakan.

Template untuk menyesuaikan adalah admin / index.html. (Lakukan hal yang sama dengan admin / base_site.html pada bagian sebelumnya - menyalinnya dari direktori default ke direktori template kustom Anda.) Edit file tersebut, dan Anda akan melihatnya menggunakan variabel template yang disebut app_list. Variabel yang berisi setiap aplikasi Django instal. Alih-alih menggunakan itu, Anda bisa keras-kode link ke objek-spesifik halaman admin dengan cara apa pun yang Anda anggap terbaik. Sekali lagi, jangan khawatir jika Anda tidak dapat memahami bahasa template - kita akan membahas bahwa lebih rinci dalam Tutorial 3.

Jangan lupa baca yang ini juga



0 comments:

Posting Komentar

PEDOMAN KOMENTAR
Ayo berpartisipasi membangun budaya berkomentar yang baik. Pantang bagi kita memberikan komentar bermuatan menghina atau spam.
Kolom komentar tersedia untuk diskusi, berbagi ide dan pengetahuan. Hargai pembaca lain dengan berbahasa yang baik dalam berekspresi. Setialah pada topik. Jangan menyerang atau menebar kebencian terhadap suku, agama, ras, atau golongan tertentu.

Bangun sharing ilmu dengan berkomentar disini :