Dalam Django, pengendalian berbilang borang pada satu halaman memerlukan pertimbangan yang teliti. Pendekatan biasa untuk mengendalikan satu bentuk, seperti yang ditunjukkan di bawah:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
menjadi tidak mencukupi apabila berurusan dengan pelbagai bentuk. Untuk menangani senario ini dengan betul, paparan mesti menentukan borang yang telah diserahkan.
Satu pendekatan adalah dengan memasukkan nilai butang hantar unik untuk setiap borang. Dengan menghuraikan data POST, paparan boleh mengenal pasti butang hantar yang diklik dan memproses borang yang sepadan.
Sebagai contoh, pertimbangkan dua bentuk bernama expectedphraseform dan bannedphraseform dengan butang submit dinamakan frasa jangkaan dan frasa larangan masing-masing. Coretan kod berikut menggambarkan cara mengendalikan berbilang borang menggunakan nilai butang hantar:
if request.method == 'POST': if 'bannedphrase' in request.POST: bannedphraseform = BannedPhraseForm(request.POST, prefix='banned') if bannedphraseform.is_valid(): bannedphraseform.save() expectedphraseform = ExpectedPhraseForm(prefix='expected') elif 'expectedphrase' in request.POST: expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected') if expectedphraseform.is_valid(): expectedphraseform.save() bannedphraseform = BannedPhraseForm(prefix='banned') else: bannedphraseform = BannedPhraseForm(prefix='banned') expectedphraseform = ExpectedPhraseForm(prefix='expected')
Dengan menggunakan nilai butang hantar yang unik, paparan boleh membezakan antara penyerahan borang dengan berkesan dan memproses borang yang dimaksudkan dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Berbilang Borang pada Halaman Tunggal di Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!