Evolusi versi Django: dari 1.x hingga 3.x, ketahui tentang ciri dan peningkatan baharu

王林
Lepaskan: 2024-01-19 09:46:13
asal
509 orang telah melayarinya

Evolusi versi Django: dari 1.x hingga 3.x, ketahui tentang ciri dan peningkatan baharu

Django ialah rangka kerja web yang ditulis dalam Python Ciri utamanya ialah pembangunan pantas, pengembangan mudah, kebolehgunaan semula yang tinggi, dsb. Sejak pelancaran pertamanya pada tahun 2005, Django telah berkembang menjadi rangka kerja pembangunan web yang berkuasa.

Semakin masa berlalu, versi Django sentiasa dikemas kini. Artikel ini akan memberikan pemahaman yang mendalam tentang evolusi versi Django, perubahan daripada 1.x kepada 3.x, memperkenalkan ciri baharu, penambahbaikan dan perubahan yang memerlukan perhatian serta memberikan contoh kod terperinci.

  1. Versi Django 1.x

Versi Django 1.x ialah versi awal Django, termasuk dari 1.0.1 hingga 1.11.29. Dalam versi ini, Django sudah mempunyai banyak fungsi asas, seperti:

a Menggunakan ORM untuk operasi pangkalan data

ORM ialah komponen teras Django. Ia membolehkan pembangun menggunakan kod Python untuk mengendalikan pangkalan data tanpa terus menggunakan pernyataan SQL. ORM menjadikan operasi lebih mudah dan lebih intuitif. Contoh mudah:

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateTimeField()
    mod_date = models.DateTimeField()
    authors = models.ManyToManyField(Author)
    n_comments = models.IntegerField()
    n_pingbacks = models.IntegerField()
    rating = models.IntegerField()
Salin selepas log masuk

Dalam contoh di atas, kami menentukan tiga model data, Blog, Pengarang dan Entri, yang semuanya diwarisi daripada model.Model. Atribut kelas ini sepadan dengan medan dalam jadual pangkalan data Contohnya, kelas Blog mempunyai dua medan: nama dan slogan, yang digunakan untuk menyimpan nama blog jenis rentetan dan slogan. Semasa mentakrifkan model data, Django akan menjana jadual pangkalan data yang sepadan secara automatik, menambah, memadam, mengubah suai dan operasi pertanyaan serta ORM API.

b. Urus URL secara automatik

Dalam versi Django 1.x, kami hanya perlu menulis fungsi paparan untuk mengendalikan permintaan HTTP, dan tidak perlu mengurus URL sendiri secara manual. Django secara automatik akan memetakan permintaan kepada fungsi paparan yang sepadan berdasarkan penghalaan URL yang dikonfigurasikan. Contohnya:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
    url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]
Salin selepas log masuk

Dalam contoh di atas, kami menentukan empat laluan URL, termasuk halaman utama, halaman butiran soalan, halaman keputusan undian dan halaman fungsi pengundian. Untuk setiap laluan URL, kami menentukan fungsi pemprosesan yang sepadan. Django secara automatik akan memadankan URL yang diminta dengan laluan, dengan itu merealisasikan fungsi mengurus URL secara automatik.

c. Sistem pengurusan latar belakang pentadbir terbina dalam

Sistem pengurusan latar belakang pentadbir Django ialah fungsi yang sangat berkuasa. Melalui sistem pengurusan latar belakang ini, kita boleh menambah, memadam, mengubah dan menyemak pangkalan data dengan mudah. Sistem pengurusan latar belakang pentadbir dalam versi Django 1.x sudah mempunyai banyak fungsi asas, seperti menjana tapak pentadbir secara automatik, mengurus model data, memaparkan senarai tersuai, penapis dan borang, dsb.

  1. Versi Django 2.x

Versi Django 2.x termasuk daripada 2.0.0 hingga 2.2.24, yang membawa beberapa peningkatan besar kepada Django.

a. Memperkenalkan ASGI

Dalam versi Django 2.x, protokol ASGI (Asynchronous Server Gateway Interface) telah diperkenalkan. ASGI ialah protokol yang direka untuk pelayan web tak segerak, yang membolehkan pembangun menulis aplikasi web tak segerak. Dengan cara ini, kami dapat memenuhi keperluan pengaturcaraan tak segerak, seperti soket web, komunikasi masa nyata, tugas yang memakan masa, dsb.

async def application(scope, receive, send):
    assert scope['type'] == 'http'

    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
        ]
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',
    })
Salin selepas log masuk

Contoh kod di atas menggunakan ASGI untuk menulis aplikasi web mudah. Pertama, tentukan fungsi tak segerak aplikasi, yang menerima tiga parameter: skop, terima dan hantar. Parameter ini ditetapkan dan dipersetujui oleh protokol ASGI. Antaranya, skop mewakili konteks permintaan, termasuk jenis permintaan, laluan, rentetan pertanyaan, dsb. terima mewakili kaedah menerima permintaan, membina kamus untuk mewakili pengepala permintaan, kod respons, dll.; mengembalikan respons kepada klien.

b. Keserasian Python 2.x yang dialih keluar

Dalam versi Django 2.x, keserasian Python 2.x telah dialih keluar dan versi pustaka pihak ketiga Python 2.x tidak lagi disokong. Ini bermakna pembangun perlu menggunakan Python 3.x untuk membangunkan aplikasi Django.

Selain itu, versi Django 2.x juga mempunyai beberapa penambahbaikan dan pengoptimuman lain, seperti:

  • Menambah kod status HTTP baharu dan pengecualian
  • Menambahkan mekanisme keselamatan kata laluan yang lebih baik
  • Sokongan ujian yang lebih baik dan rangka kerja ujian baharu; diperkenalkan.
  1. Versi Django 3.x

Versi Django 3.x ialah versi terkini pada masa ini, termasuk dari 3.0.0 hingga 3.2.5. Ia meningkatkan lagi fungsi dan prestasinya berdasarkan versi 2.x.

a. Parameter laluan sokongan

Dalam versi Django 3.x, Penukar Laluan, iaitu sokongan untuk parameter laluan, telah diperkenalkan. Ciri baharu ini sangat berguna untuk membangunkan API RESTful dan boleh menyediakan kaedah pemadanan yang lebih fleksibel untuk URL.

from django.urls import path

def greet(request, name):
    return HttpResponse(f'Hello, {name}!')

urlpatterns = [
    path('greet/<name>/', greet),
    ...
]
Salin selepas log masuk

Dalam contoh di atas, kami menentukan nama parameter laluan. Sebarang nilai dalam laluan permintaan boleh diisikan ke dalam parameter nama dan diwakili sedemikian semasa memproses paparan.

b. Penggantian UnicodeSlugify

Dalam versi Django 3.x, UnicodeSlugify tidak lagi digunakan untuk menggantikan Slugify lalainya. UnicodeSlugify ialah perpustakaan pihak ketiga yang membolehkan pembangun bekerja dengan lebih banyak bahasa dan set aksara. Daripada UnicodeSlugify, algoritma Slugify baharu telah direka untuk Django yang lebih piawai, lebih setempat, lebih komprehensif, lebih berskala dan lebih selamat.

c. Optimumkan pertanyaan pangkalan data

Dalam versi Django 3.x, kaedah pertanyaan pangkalan data dioptimumkan lagi. Contohnya, apabila aplikasi bermula, Django menyimpan metadata untuk semua pertanyaan pangkalan data. Ini boleh mengurangkan bilangan carian struktur jadual dan meningkatkan kelajuan tindak balas aplikasi.

Selain itu, versi Django 3.x juga menambahkan banyak ciri dan penambahbaikan baharu yang lain, seperti:

  • Perisian tengah baharu yang menyokong pangkalan data bacaan berbilang
  • Penjanaan pelan pertanyaan yang dioptimumkan dengan ketara dan
  • sokongan penambahan secara dinamik; pertanyaan kumpulan;
  • Tambahan sokongan untuk e-mel tak segerak dan permintaan HTTP

Artikel ini menerangkan secara ringkas perubahan dalam evolusi daripada Django 1.x kepada Django 3.x. Perubahan ini membawa prestasi yang lebih baik, kecekapan pembangunan yang lebih baik dan kemudahan penggunaan yang lebih baik. Sebagai rangka kerja MVC, saya percaya Django akan menjadi lebih dan lebih sempurna.

Atas ialah kandungan terperinci Evolusi versi Django: dari 1.x hingga 3.x, ketahui tentang ciri dan peningkatan baharu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!