# dokumentasi Django 2.2.9.dev20191202104323

# Catatan terbitan Django versi 0.96

Selamat datang di Django 0.96!

Sasaran utama untuk 0.96 adalah pembersihan dan stabilitas dari fitur yang diperkenalkan dalam 0.95. Ada beberapa backwards-incompatible changes kecil sejak 0.95, tetapi proses peningkatan harus mudah dan harus tidak membutuhkan perubahan besar pada aplikasi yang ada.

Bagaimanapun, kami juga menerbitkan 0.96 sekarang karena kami mempunyai kumpulan jadwal perubahan bertentangan-kebelakang untuk tidak lama lagi. Sekali lengkap, mereka akan melibatkan beberapa kode perubahan untuk pengembang aplikasi, sehingga kami menganjurkan bahwa anda menempel dengan Django 0.96 sampai terbitan resmi selanjutnya; kemudian anda akan dapat meningkatkan dalam satu langkah daripada membutuhkan untuk membuat peningkatan perubahan untuk menjaga dengan pengembangan versi Django.

## Perubahan bertentangan-kebelakang

Perubahan berikut mungkin membutuhkan anda memperbaharui kode anda ketika anda mengganti dari 0.95 ke 0.96:

### Versi wajib MySQLdb`

Dikarenakan kesalahan di versi terlama dari modul Python `MySQLdb` (dimana Django gunakan untuk menghubung ke basisdata MySQL), backend MySQL Django sekarang membutuhkan versi 1.2.1p2 atau lebih tinggi dari `MySQLdb`, dan akan memunculkan pengecualian jika anda berusaha menggunakan sebuah versi terlama.

Jika anda sedang saat ini tidak dapat meningkatkan salinan anda dari `MySQLdb` untuk memenuhi persyaratan ini, terpisah, backend kesesuaian-kebelakang, dipanggil "mysql_old", telah ditambahkan ke Django. Untuk menggunakan backend ini, rubah pengaturan `DATABASE_ENGINE` di berkas pengaturan Django anda dari ini:

    DATABASE_ENGINE = "mysql"

untuk ini:

    DATABASE_ENGINE = "mysql_old"

Bagaimanapun, kami sangat mendorong pengguna MySQL untuk meningkatkan lebih versi saat ini dari `MySQLdb` secepat mungkin, backend "mysql_old" disediakan hanya untuk memudahkan perpindahan ini, dan dipertimbangkan diusangkan, disamping dari perbaikan keamanan yang diperlukan, itu tidak akan aktif dirawat, dan itu akan dipindahkan di terbitan akan datang dari Django.

Juga, catat bahwa beberapa fitur, seperti pengaturan `DATABASE_OPTIONS` baru (lihat databases documentation untuk rincian), hanya tersedia pada backend "mysql", dan tidak akan tersedia untuk "mysql_old".

### Nama-nama pembatas basisdata berubah

Bentuk dari batasan nama Django dibangkitkan untuk acuan foreign key telah berubah sedikit. Nama-nama ini umumnya hanya digunakan ketika itu tidak memungkinkan menaruh acuan secara langsung pada kolom terpengaruh, jadi mereka tidak selalu nampak.

Pengaruh dari perubahan ini bahwa menjalankan `manage.py reset` dan erintah-perintah mirip terhadap basisdata yang ada mungkin membangkitkan SQL dengan bentuk baru dari batasan nama, selagi basisdata itu sendiri mengandung batasan bernama dalam bentuk lama; ini akan menyebabkan peladen basisdata memunculkan sebuah pesan kesalahan tentang merubah batasan-batasan yang tidak ada.

Jika anda butuh memecahkan ini, terdapat dua metode tersedia:

1. Alihkan keluaran dari `manage.py` ke berkas, dan rubah SQL dibangkitkan untuk menggunakan nama batasan yang benar sebelum menjalankannya.
2. Ujikan keluaran dari `manage.py sqlall` untuk melihat bnama batasan gaya-baru, dan gunakan itu sebagai panduan untuk menamai kembali batasan yang ada dalam basisdata anda.

### Perubahan nama di `manage.py`

Sedikit pilihan pada `manage.py` telah berubah dengan penambahan dukungan perlengkapan tetap:

- Ada perintah `dumpdata` dan `loaddata` baru yang, mungkin anda harapkan, akan mengeluarkan dan memuat data ke/dari basisdata. Perintah ini dapat beroperasi terhadap bentuk serialisasi terdukung Django apapun.
- Perintah `sqlinitialdata` telah dinamai kembali menjadi `sqlcustom` untuk menegaskan bahwa `loaddata` harus digunakan untuk data (dan `sqlcustom` untuk SQL penyesuaian lain -- view, store procedure, dll.).
- Vestigial perintah `install` telah dipindahkan. Gunakan `syncdb`.

### Pelolosan backslash berubah

API basisdata Django sekarang meloloskan garis miring kebelakang yang diberikan sebagai parameter permintaan. Jika anda mempunyai kode API basisdata apapun yang cocok dengan garis miring kebelakang, dan dia bekerja sebelumnya (meskipun kurang dari pelolosa), anda harus merubah kode anda ke "unescape" garis miring satu tingkat.

Sebagai contoh, ini berguna untuk bekerja:

    # Find text containing a single backslash
    MyModel.objects.filter(text__contains='\\\\')

Diatas sekarang tidak benar, dan harus di tulis kembali sebagai:

    # Find text containing a single backslash
    MyModel.objects.filter(text__contains='\\')

### Pindahkan pengaturan ENABLE_PSYCO

Pengaturan `ENABLE_PSYCO` tidak lagi ada. Jika berkas pengaturan anda termasuk `ENABLE_PSYCO` itu tidak akan mempunyai efek; untuk menggunakan Psyco, kami menganjurkan menulis kelas middleware untuk mengaktifkannya.

## Apa yang baru di 0.96?

Perbaikan ini mewakili lebih dari ribuan perbaikan dan lebih empat ratus perbaikan kesalahan, jadi kami tidak mungkin mengkatalogkan semua perubahan. Disini, kami menggambarkkan keterangan paling berubah di terbitan ini.

### Pustaka formulir baru

`django.newforms` adalah pustaka penanganan-formulir baru Django. Dia pengganti untuk `django.forms`, kerangka kerja form/manipulator/validation lama. Kedua API tersedia dalam 0.96, tetapi diatas dua terbitan selanjutnya kami berencana mengganti seluruhnya ke sistem formulir baru, dan mengusangkan dan memindahkan sistem lama.

Ada tiga unsur ke peralihan ini:

- Kami menyalin `django.forms` saat ini ke `django.oldforms`. Ini mengizinkan anda meningkatkan kode anda sekarang daripada menunggu untuk perubahan ketidakcocokan-kebelakang dan buru-buru memperbaiki kode anda setelah fakta. Cukup rubah pernyataan impor anda seperti ini:

      from django import forms             # 0.95-style
      from django import oldforms as forms # 0.96-style

- Terbitan resmi selanjutnya dari Django akan memindahkan `django.newforms` saat ini ke `django.forms`. Ini akan menjadi perubahan kecocokan-kebelakang, dan siapapun masih menggunakan versi lama dari `django.forms` pada waktu itu akan butuh merubah pernyataan impor mereka seperti digambarkan diatas.

- Terbitan selanjutnya setelahnya akan sepenuhnya memindahkan `django.oldforms`.

Meskipun pustaka `newforms` akan lanjut berkembang, dia siap untuk digunakan untuk kebanyakan kasus umum. Kami menganjurkan bahwa seiapapun baru terhadap penanganan formulir lewati sistem formulir baru dan mulai dengan yang baru.

Untuk info lebih lanjut mengenai `django.newforms`, baca newforms documentation.

### Perbaikan URLconf

Anda dapat sekarang menggunakan callable apapun sebagai callback dalam URLconf (sebelumnya, hanya deretan karakter yang mengacu pada dapat dipanggil yang diizinkan). Ini mengizinkan lebih banyak penggunaan alami dari URLconf. Sebagai contoh, ini URLconf:

    from django.conf.urls.defaults import *

    urlpatterns = patterns('',
        ('^myview/$', 'mysite.myapp.views.myview')
    )

sekarang dapat ditulis kembali sebagai:

    from django.conf.urls.defaults import *
    from mysite.myapp.views import myview

    urlpatterns = patterns('',
        ('^myview/$', myview)
    )

Satu aplikasi berguna dari ini dapat dilihat ketika menggunakan decorator; perubahan ini mengizinkan anda memberlakukan decorator untuk melihat dalam URLconf anda. Dengan demikian, anda dapat membuat tampilan umum dibutuhkan masuk sangat mudah:

    from django.conf.urls.defaults import *
    from django.contrib.auth.decorators import login_required
    from django.views.generic.list_detail import object_list
    from mysite.myapp.models import MyModel

    info = {
        "queryset" : MyModel.objects.all(),
    }

    urlpatterns = patterns('',
        ('^myview/$', login_required(object_list), info)
    )

Catat bahwa kedua sintaksis (deretan karakter dan callable) adalah sah, dan akan tetap sah untuk masa akan datang.

### Kerangka percobaan

Django sekarang menyertakan sebuah kerangka percobaan sehingga anda dapat memulai mengubah ketakutan dan kebosanan (dengan permintaan maaf kepada Kent Beck). Anda dapat menulis percobaan berdasaran pada `doctest` atau `unittest` dan ujikan tampilan anda dengan percobaan klien sederhana.

Terdapat juga dukungan untuk "fixtures" -- data awal, disimpan pada serialisasi bentuk yang didukung, yang akan dimuat kedalam basisdata anda pada awal percobaan anda. Ini membuat percobaan dengan data sesungguhnya lebih mudah.

Lihat dokumentasi percobaan untuk rincian penuh.

### Perbaikan terhadap antarmuka admin

Sebuah perubahan kecil, tetapi sangat bagus: tampilan ditujukan untuk menambahkan dan memperbaharui pengguna yang telah ditambahkan ke antarmuka admin, sehingga anda tidak lagi khawatir tentang bekerja dengan sandi diacak dalam admin.

## Terima kasih

Sejak 0,95, sejumlah orang telah melangkah maju dan mengambil peran baru utama dalam pengembangan Django. Kami ingin berterima kasih kepada orang-orang ini untuk semua kerja keras mereka:

- Russell Keith-Magee dan Malcolm Tredinnick untuk sumbangan kode utama mereka. Terbitan ini tidak akan mungkin tanpa mereka.
- Pengelola terbitan baru kami, James Bennett, untuk pekerjaannya dalam mengeluarkan 0.95.1, 0.96, dan (semoga) terbitan mendatang.
- Pengelola tiket kami Chris Beaven (dikenal sebagai SmileyChris), Simon Greenhill, Michael Radziej, dan Gary Wilson. Mereka setuju untuk mengambil tugas penting dari perselisihan tiket kami kedalam pengajuan katalog yang baik. Mencari tahu apa yang dikerjakan adalah sekarang tentang sejuta waktu lebih mudah; terima kasih kembali, teman-teman.
- Setiap orang yang mengajukan laoran kesalahan, tambalan, atau komentar tiket. Kami tidak mungkin berterima kasih semuanya berdasarkan nama -- lebih 200 pengembang mengajukan tambalan yang masuk ke 0.96 -- tetapi setiap orang yang menyumbang ke Django didaftarkan dalam AUTHORS.