2 Stimmen

Django render_to_response() mit angegebenen Parameternamen

Ich bin nicht 100% sicher, ob dies eine Django oder eine Python Frage ist, aber ich denke, es hat etwas mit Django zu tun.

Da ich neu in der Django-Welt bin, versuche ich, mir die gute Gewohnheit anzugewöhnen, bei Funktionsaufrufen explizit Parameternamen anzugeben.

Im Fall von render_to_response(), würde ich etwas wie das folgende haben:

render_to_response(template='lend_borrow/MyAccount_mod.html',
                   dictionary={'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                   context_instance=RequestContext(request))

Aber damit bekam ich einen Fehler, "render_to_string() bekam ein unerwartetes Schlüsselwort-Argument 'template'".

Damit render_to_response() in meiner View-Funktion funktioniert, musste ich sie ändern in

render_to_response('lend_borrow/MyAccount_mod.html',
                    {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                    RequestContext(request))

OR

render_to_response('lend_borrow/MyAccount_mod.html',
                    {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                    context_instance=RequestContext(request))

QUESTION: Warum führt der erste Ansatz, render_to_response() aufzurufen, zu einem Fehler?

3voto

Chris Pratt Punkte 219403

render_to_response ist ein Wrapper um HttpResponse . Allerdings, HttpResponse nimmt gerenderten Inhalt, nicht den Namen einer Vorlage. Deshalb, render_to_response ruft auf. render_to_string und der Parameter in render_to_string est template_name ノット template .

Allerdings ist das Voranstellen von Parameternamen nicht unbedingt eine "gute Praxis". Eine gute Praxis ist es, Konventionen zu befolgen, und die Konvention ist es, Parameternamen nicht in render_to_response außer für context_instance .

2voto

mipadi Punkte 377834

Der Name des Parameters lautet template_name , nicht template .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X