Ich möchte einen Cookie in einer Ansicht festlegen und dann eine Vorlage in dieser Ansicht rendern. Wie ich es verstehe, ist dies der Weg, einen Cookie zu setzen:Wie setze ich einen Cookie in Django und rendere dann die Vorlage?
def index(request):
response = HttpResponse('blah')
response.set_cookie('id', 1)
return response
Allerdings mag ich ein Cookie setzen und dann eine Vorlage machen, so etwas wie diese:
def index(request, template):
response_obj = HttpResponse('blah')
response_obj.set_cookie('id', 1)
return render_to_response(template, response_obj) # <= Doesn't work
Die Vorlage enthält Links, die, wenn sie angeklickt werden, andere Ansichten ausführen, die nach dem Cookie suchen, den ich einstelle. Was ist der richtige Weg, um das zu tun, was ich im zweiten Beispiel gezeigt habe? Ich verstehe, dass ich eine Zeichenfolge erstellen konnte, die den gesamten HTML-Code für meine Vorlage enthält, und diese Zeichenfolge als Argument an HttpResponse übergeben, aber das scheint wirklich hässlich zu sein. Gibt es dafür keinen besseren Weg? Vielen Dank.
Sie instanziieren Sie zuerst eine HttpResponse, aber nichts damit zu tun. 'render' gibt eine Antwort zurück, die Sie der gleichen Variablen zuweisen, auf die Sie dann das Cookie setzen und die Sie schließlich zurückgeben. Ihre Antwort wäre äquivalent mit der entfernten Zeile 'response = HttpResponse() '. –
Ich habe vielleicht etwas missverstanden, aber war nicht die Frage "Wie setze ich einen Cookie * vor * Rendering der Vorlage"? – vmonteco