Apabila bekerja dengan berbilang borang pada halaman templat Django tunggal, mengenal pasti borang yang telah diserahkan boleh menjadi satu cabaran. Soalan ini menangani isu dan menyediakan penyelesaian menggunakan awalan borang.
Jika satu borang digunakan, pendekatan standard adalah untuk menyemak kaedah permintaan dan memproses borang tersebut dengan sewajarnya:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
Walau bagaimanapun, dengan berbilang borang, menentukan yang mana satu untuk diproses semasa hanya menerima satu permintaan. Objek POST boleh menjadi rumit. Penyelesaian yang dicadangkan dalam soalan ini melibatkan penggunaan awalan borang, membenarkan paparan membezakan antara borang.
Penyelesaian yang disediakan mencipta dua contoh borang, satu untuk setiap borang yang dijangkakan, dan kemudian memeriksa nilai butang hantar dalam POST data. Dengan menggunakan awalan dalam nama borang dan serahkan nama butang, kod boleh menentukan borang yang telah diserahkan:
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')
Pendekatan ini mengendalikan berbilang borang dengan berkesan pada satu halaman Django, memastikan hanya borang yang dimaksudkan diproses dan disahkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Berbilang Borang pada Halaman Django Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!