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 berikut mungkin membutuhkan anda memperbaharui kode anda ketika anda mengganti dari 0.95 ke 0.96:
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”.
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:
Alihkan keluaran dari manage.py
ke berkas, dan rubah SQL dibangkitkan untuk menggunakan nama batasan yang benar sebelum menjalankannya.
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.
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
.
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='\\')
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.
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.
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.
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.
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.
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.
Agt 01, 2016