2016-08-07 82 views
1

Ich habe Ansichten wie die unten seit rund Django 1.5, die in allen Django-Versionen seit (einschließlich 1.9) wie ein Charme funktionierte.Seit Django 1.10, meine Benutzer/Sitzung Daten verloren ist mit FBVs

def site_info(request): 
    context = RequestContext(request) 
    context_dict = {} 
    context_dict['site_version'] = settings.SITE_VERSION 
    return render_to_response('site_info.html', context_dict, context) 

Allerdings seit Django 1.10 lädt die Seite, aber keine Sitzung/Benutzerdaten verfügbar. Es sieht so aus, als wäre der Benutzer nicht angemeldet. Wenn Sie zu einem CBV zurückkehren, funktionieren die Dinge gut. Session data corrupted wird angezeigt, wenn Django ausgeführt wird.

Auch Nicht-ASCII-Zeichen wie ë werden jetzt als ë angezeigt.

Ich fand das Problem ist mit render_to_response. Wenn Sie stattdessen zu render wechseln, sind die Probleme verschwunden.

def site_info(request): 
    context_dict = {} 
    context_dict['site_version'] = settings.SITE_VERSION 
    return render(request, 'site_info.html', context_dict) 

las ich die Django 1.10 release notes aber nichts, was ich kann wirklich auf meinen Finger zeigen. Übersehe ich etwas? Warum die plötzliche Verhaltensänderung?

Antwort

3

Vom Release Notes:

The dictionary and context_instance parameters for the following functions are removed: 
- django.shortcuts.render() 
- django.shortcuts.render_to_response() 
- django.template.loader.render_to_string() 

zu render() Ändern wird das Problem behoben.

0

Upgrade von 1.5 zu 1.10 direkt ist eine schlechte Idee. Versuchen Sie 1.5 ->1.6 ->1.7 ->1.8 ->1.9 ->1.10.

Von render_to_response Dokumentation

Es ist nicht zu empfehlen ist und wird wahrscheinlich in Zukunft weiterentwickelt werden.

+0

Natürlich habe ich nicht von Django 1.5 direkt auf 1.10 aktualisiert. Django 1.5 im Jahr 2016 laufen zu lassen wäre eine sehr schlechte Idee. Die Funktionalität brach beim Übergang von 1.9 auf 1.10, aber die Implementierung wurde in ~ 1.5 durchgeführt; Ich werde es in meinem Beitrag klären. – SaeX