Ich finde es nicht gut, das repr {'delete_id': [u'6', u'15']} ausgibt.
Ich bekomme mit form['delete_id'] nunmal keine normale Liste, wie man
meinen könnte, sondern nur die letzte Position in der Liste :(
Ich finde das repr sollte unbedingt abgeändert werden! Sonst stolpert
man da immer wieder drüber!
Wie wäre es z.B. mit:
{'delete_id': MultiDict(u'6', u'15')}
oder sowas. Dann weiß man das es keine "normale" Liste ist. Ob man
dann aber weiß, das man mit .getlist() arbeiten muß ist eine andere
Sache. Aber zumindest kann man damit rechnen, das form['delete_id']
keine Liste ist.
Mfg.
Jens
Vorschlag für einen besseren __repr__ der trotzdem alles anzeigt?
Regards,
Armin
Tja ich weiß nicht recht wie man es richtig umsetzten kann. Eine dumme
Lösung, aber wenigstens etwas, wäre das hier:
def __repr__(self):
return "MultiDict(%s)" % dict.__repr__(self)
Bringst statt das:
{'delete_id': [u'15', u'16'], 'make': [u'make'], 'disallow':
[u'disallow']}
halt das hier:
MultiDict({'delete_id': [u'15', u'16'], 'make': [u'make'], 'disallow':
[u'disallow']})
Schon ein wenig besser... Optimal wäre aber IMHO sowas:
{'delete_id': MultiDict(u'15', u'16'), 'make': [u'make'], 'disallow':
[u'disallow']}
Wobei es ja nicht so ganz richtig ist ;-/ Denn die Zahlen sind ja nicht
das MultiDict, sondern die gesammte Zeile... Hmmm... Vielleicht sowas:
MultiDict({'delete_id': MultiDictList(u'15', u'16'), 'make': [u'make'],
'disallow': [u'disallow']})
Was mir dabei noch einfällt... Colubrid's Debug müßte am besten auch
angepasst werden, damit man sehen kann, das es ein MultiDict ist und
kein normales... Ich hätte da einen Vorschlag:
-----------------------------------------------------------------------------------------------------------------
class DebugRender(object):
...
def var_table(self, var):
...
# dicts
if isinstance(var, dict):
# empty dict
if not var:
return ('<table class="vars"><tr><th>no data given'
'</th></tr></table>')
items = var.items()
items.sort()
result = ['<table class="vars"><tr><th>Name'
'</th><th>Value</th></tr>']
for key, value in items:
#++++++++++++++++
# MultiDict
if hasattr(var, "getlist"):
value_list = var.getlist(key)
if len(value_list)>1:
value = "MultiDict.getlist(%s)" % value_list
#++++++++++++++++
try:
val = saxutils.escape(pprint.pformat(value))
except:
val = '?'
result.append('<tr><td class="name">%s</td><td
class="value">%s'
'</td></tr>' %
(saxutils.escape(repr(key)), val))
result.append('</table>')
return '\n'.join(result)
-----------------------------------------------------------------------------------------------------------------