Skip to main content

Upgrade Web Framework Django 3.0.8 ke yang Terbaru

upgrade web framework django

Upgrade Web Framework Django 3.0.8 ke yang Terbaru

Ada 3 versi Django yang masih mendapatkan support hingga saat ini (September 2020), yaitu versi 2.2 yang merupakan versi LTS. Meski sudah lama versi 2.2 LTS ini rilis, namun akan tetap mendapatkan update hingga April 2022. Dan untuk versi yang lainnya ada juga versi 3.0 yang versi terakhirnya pada September 2020 ini versi 3.0.10, dan versi 3.1 yang telah sampai pada versi 3.1.1 pada September 2020 ini. Saya akan mencoba untuk mengupgrade Django versi 3.0.8 ke versi 3.0.10, pada update terakhir versi ini adalah untuk update security.

Kalau teman-teman semuanya mau mengupgrade dari versi 2.2 keversi 3.0 atau 3.1, pastikan terlebih dahulu semua dependencies yang digunakan pada versi sebelumnya juga bisa berjalan pada versi Django yang baru. Karena mungkin saja Dependencies yang digunakan saat ini, tidak mendukung versi Django terbaru. Entah itu karena sudah tidak lagi diurus oleh pembuatnya, atau memang belum ada update terbaru.

Back to top

1) Fitur Baru Pada Django 3.0

Dibandingkan dengan yang versi sebelumnya, pada rilis ini tentu ada perubahan berupa penambahan fitur baru, dan juga beberapa fitur yang tidak kompatibel lagi dengan versi 2.2. Jadi, kalau sebelumnya menggunakan versi 2.2 dan akan mengupgrade ke yang versi 3.0, baiknya perhatikan beberapa yang tidak kompatibel lagi seperti berikut ini:

1.1) Fitur yang tidak kompatibel dengan 2.2

  1. Model.save(), sekarang Model.save() tidak lagi mencoba mencari baris (row) saat melakukan penyimpanan instance Model baru dan selalu menjalankan query INSERT tunggal. Yang pada versi lama, Model.save() akan melakukan INSERT atau UPDATE berdasarkan baris itu ada atau tidak.

    Sebagai gantinya kita bisa menggunakan untuk mengupdate gunakan method update_or_create() atau menggunakan QuerySet.filter(pk=...).

    Contoh:

    MyModel.objects.update_or_create(pk=...., defaults={'name': 'new name'})
    
    My.Model.objects.filter(pk=existing_pk).update(name='new name')
    
  2. django.contrib.gis. Ada yang dihilangkan pada support untuk PostGIS 2.1, SpatiaLite 4.1 dan 4.2, serta GDAL 1.11 dan GEOS 3.4
  3. PostgreSQL 9.4. Sekarang pada Django 3.0 tidak bisa lagi menggunakan PostgreSQL 9.4, dan menggunakan PostgreSQL 9.5 atau yang lebih baru.
  4. Oracle 12.1. Mulai pada Juli 2021 dukungan terhadap Oracle 12.1 akan berakhir, dan yang menggunakan versi 2.2 masih tetap bisa menggunakannya hingga April 2022. Untuk Django 3.0 hanya mendukung versi Oracle mulai dari 12.2 dan 18c.
  5. Private python 2
  6. Security Settings. Sekarang pada X_FRAME_OPTIONS memiliki nilai default 'DENY'.
  7. django.utils.encoding.force_text() dan smart_text()

Itu tadi beberapa fitur yang kadaluarsa dan sudah tidak lagi bisa digunakan pada Django 3.0.

1.2) Fitur Baru

Dan ini daftar beberapa yang baru pada Django 3.0

  1. MariaDB. Sekarang sudah mendukung dengan MariaDB 10.1
  2. ASGI Support. Di Django 3.0 sekarang sudah bisa menjalankan aplikasi ASGI yang full async-capable.
  3. Filter Expressions. Output dari BooleanField sekarang sudah bisa digunakan langsung pada QuerySet filter tanpa menambahkan keterangan (annonate dan annotation).
  4. Juga beberapa fitur minor lainnya, diantaranya django.contrib.sessions memiliki method baru get_sessions_cookie_age() mengizinkan untuk menentukan secara spesifik session cookie age secara dinamis. Cache add_never_cache_header() dan never_cache() sekarang ada private untuk Cache-Control header.
  5. Pada Models kita juga bisa menggunakan hash function MD5, SHA1, SHA224, SHA256, SHA384, dan SHA512

Untuk lebih lengkapnya, bisa dilihat pada dokumentasi Django Project

Back to top

2) Upgrade Web Framework Django

Ok, untuk mengupgrade web framework Django, setelah kita semua mengetahui kira-kira web yang sedang sudah berjalan pada Django versi sebelumnya akan error atau tidak. Setelah mengetahui resikonya maka, bolehlah untuk melakukan upgrade.

Langsung saja untuk upgrade, pastikan teman semua sudah menggunakan python minimal versi 3.6 atau 3.7 dan 3.8

python -Wa manage.py test
upgrade django

Sekarang kita akan menginstall Django dengan versi baru, disini saya sebelumnya menggunakan Django versi 2.2.16 dan akan mengupgrade keversi 3.0.8.

pip install --upgrade Django==3.0.8
upgrade django

Dan selanjutnya saya akan juga mengupgrade ke versi yang terbaru, dengan menjalankan test lagi selanjutnya menjalankan pip upgrade.

pip install --upgrade Django
upgrade django

Setelah semua selesai dan tidak ada error

Back to top

3) Akhir Kata

Ketika teman semuanya merasa sangat yakin untuk melakukan upgrade, dan setelah upgrade tidak akan mendapatkan error, maka lakukan saja. Setelah selesai dan berhasil, maka bisa langsung melanjutkan untuk mendeploy proyek Django yang telah diupgrade.

Kalau ada pertanyaan mengenai Django, bisa langsung komen di bawah, atau ke sosial media lainnya di menu kontak

Back to top