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 perubahan kesesuaian-kebelakang 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 kesesuaian-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 utnuk menjaga dengan pengembangan versi Django.

Perubahan kesesuaian-kebelakang

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

Versi wajib MySQLdb`

Due to a bug in older versions of the MySQLdb Python module (which Django uses to connect to MySQL databases), Django’s MySQL backend now requires version 1.2.1p2 or higher of MySQLdb, and will raise exceptions if you attempt to use an older version.

If you’re currently unable to upgrade your copy of MySQLdb to meet this requirement, a separate, backwards-compatible backend, called “mysql_old”, has been added to Django. To use this backend, change the DATABASE_ENGINE setting in your Django settings file from this:

DATABASE_ENGINE = "mysql"

untuk ini:

DATABASE_ENGINE = "mysql_old"

However, we strongly encourage MySQL users to upgrade to a more recent version of MySQLdb as soon as possible, The “mysql_old” backend is provided only to ease this transition, and is considered deprecated; aside from any necessary security fixes, it will not be actively maintained, and it will be removed in a future release of 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”.

Database constraint names changed

The format of the constraint names Django generates for foreign key references have changed slightly. These names are generally only used when it is not possible to put the reference directly on the affected column, so they are not always visible.

The effect of this change is that running manage.py reset and similar commands against an existing database may generate SQL with the new form of constraint name, while the database itself contains constraints named in the old form; this will cause the database server to raise an error message about modifying non-existent constraints.

Jika anda butuh menyiasati ini, terdapat dua cara 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.

Backslash escaping changed

The Django database API now escapes backslashes given as query parameters. If you have any database API code that matches backslashes, and it was working before (despite the lack of escaping), you’ll have to change your code to “unescape” the slashes one level.

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

The ENABLE_PSYCO setting no longer exists. If your settings file includes ENABLE_PSYCO it will have no effect; to use Psyco, we recommend writing a middleware class to activate it.

Apa yang baru di 0.96?

This revision represents over a thousand source commits and over four hundred bug fixes, so we can’t possibly catalog all the changes. Here, we describe the most notable changes in this release.

New forms library

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 bentuk baru dokumentasi.

Perbaikan URLconf

Anda dapat sekarang menggunakan dapat dipanggil 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 dapat dipanggil) 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 hash 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.