جانغو يعادل قيمة شكل مجموعة / مجموعة PHP لالنقابي
سؤال
في PHP، وأود أن تفعل هذا للحصول على name
كما صفيف.
<input type"text" name="name[]" />
<input type"text" name="name[]" />
وأو إذا كنت أرغب في الحصول name
باعتبارها مجموعة النقابي:
<input type"text" name="name[first]" />
<input type"text" name="name[last]" />
ما هو ما يعادل جانغو لمثل هذه الأمور؟
المحلول
تحقق من وثائق QueryDict ، وخاصة استخدام QueryDict.getlist(key)
.
ومنذ request.POST وrequest.GET في عرض حالات من QueryDict، هل يمكن أن تفعل هذا:
<form action='/my/path/' method='POST'>
<input type='text' name='hi' value='heya1'>
<input type='text' name='hi' value='heya2'>
<input type='submit' value='Go'>
</form>
وبعد ذلك شيئا من هذا القبيل:
def mypath(request):
if request.method == 'POST':
greetings = request.POST.getlist('hi') # will be ['heya1','heya2']
نصائح أخرى
وآسف لحفر هذا الأمر، ولكن جانغو لديه utils.datastructures.DotExpandedDict. وهنا قطعة من انها مستندات:
>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \
'person.1.lastname': ['Willison'], \
'person.2.firstname': ['Adrian'], \
'person.2.lastname': ['Holovaty']})
>>> d
{'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}}
والفرق الوحيد هو استخدام نقطة بدلا من الأقواس.
وتحرير: تم استبدال هذه الآلية التي البادئات شكل من الأشكال، ولكن هنا القانون القديم يمكنك إسقاط في التطبيق الخاص بك إذا كنت لا تزال تريد استخدام هذا المفهوم: https://gist.github.com/grzes/73142ed99dc8ad6ac4fc9fb9f4e87d60
وجانغو لا توفر وسيلة للحصول على المصفوفات الترابطية (قواميس في بيثون) من وجوه الطلب. كما أشارت الجواب الأول بها، يمكنك استخدام .getlist()
حسب الحاجة، أو كتابة دالة التي يمكن أن تأخذ QueryDict
وإعادة تنظيم لترضيك (سحب أزواج مفتاح / قيمة إذا كان مفتاح مباريات بعض نمط key[*]
، على سبيل المثال).