جانغو يعادل قيمة شكل مجموعة / مجموعة PHP لالنقابي

StackOverflow https://stackoverflow.com/questions/801354

سؤال

في 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[*]، على سبيل المثال).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top