Ich habe stundenlang gearbeitet, um das folgende Problem zu verstehen: Ich habe einen Benutzer senden eine Ajax-Anfrage, um dynamisch ein Formular zu senden und aufzuzeichnen, dass die Anzahl der Formulare beim Einreichen erhöht hat. Zu diesem Zweck verwende ich request.session['editing_foo'] = { 'prefix_of_form_elements' : pkey }
, so dass ich sie mit der Datenbank zum Speichern und Laden verknüpfen kann (-1 ist für neue Formulare, die noch nicht gespeichert wurden).Django-Sitzung persistent, aber verlierende Daten
Allerdings, wenn ich den folgenden Code verwenden (siehe unten) ich folgende bizarre Ausgabe:
1. Klicken Sie auf:
{} foousername
next_key 1
1
{u'1-foo': -1}
2. Klicken Sie auf:
{} foousername
next_key 1
1
{u'1-foo': -1}
3. Anfrage:
{} foousername
next_key 1
1
{u'1-foo': -1}
Was zum Teufel ist los?
id_fetcher = re.compile(r'\d')
@login_required
def ajax_add_foo(request):
def id_from_prefix(key):
return int(id_fetcher.search(key).group(0))
if 'editing_foos' not in request.session:
print "reinitializing"
request.session['editing_foos'] = {}
print request.session['editing_foos'], request.user
keys = request.session['editing_foos'].keys()
if len(keys) == 0:
next_key = 1
else:
print [ id_from_prefix(key) for key in keys ]
next_key = max([ id_from_prefix(key) for key in keys ]) + 1
print "next_key", next_key
fooform = FooForm(prefix=next_key)
print next_key
request.session['editing_foos'].update({create_prefix(FooForm, next_key) : -1 }) # This quote is new and has no pkey
print request.session['editing_foos']
return render_to_response('bar/foo_fragment.html',
{'fooform' : fooform, },
context_instance=RequestContext(request))
Vielen Dank allen!
Hinweis: Dies ist eine Folge zu einer previous question über den gleichen Quellcode.
Schön! Du bist ein Genie! Ich habe diese Option nie in den Dokumenten erwähnt! – SapphireSun
Sie sparen mein Leben! Habe das nicht in der Doku gesehen –
Danke bro ..! Du sparst meine Tage: P –