Django - Pourquoi devrais-je utiliser la render_to_response à tous?

considérez ceci:

return render(request, 'index.html', {..context..})
return render_to_response('index.html', {..context..})

D'une part, render est plus propre et plus pythonic. De l'autre, vous utilisez le request que votre premier argument que je trouve redondant et confus. J'ai donc commencé à me demander sur les plus grandes différences...

Selon les docs:

render() est la même comme un appel à render_to_response() avec un
context_instance argument que les forces de l'utilisation d'un RequestContext.

Donc, la différence est seulement dans l'utilisation de RequestContext. Donc ce qui est important à propos de RequestContext? Regardons les docs de nouveau:

un Contexte particulier, la classe [...] se comporte légèrement différemment de la
normal django.de modèle.Contexte. La première différence est qu'il prend
un HttpRequest en tant que premier argument.

Ok. Qu'à peine, à tous

La deuxième différence, c'est qu'il remplit automatiquement le contexte
avec un peu de variables, en fonction de votre TEMPLATE_CONTEXT_PROCESSORS
mise en [...] En plus de ces, RequestContext utilise toujours
django.de base.context_processors.csrf [...] c'est délibérément codé en dur
et ne peut pas être désactivé par le TEMPLATE_CONTEXT_PROCESSORS
le réglage.

Donc c'est l'essentiel: faire en sorte que toutes les processeurs fonctionnent correctement, avec un accent sur les csrf. Alors, vraiment, pour revenir à mon premier exemple, ces sont en fait les mêmes:

return render(request, 'index.html', {...})
return render_to_response('index.html', {...}, context_instance=RequestContext(request))

Maintenant, Le deuxième exemple est évidemment bien pire, tout cela semble malheureusement être trop compliqué. Donc ma grande question est Pourquoi utiliser render_to_response à tous? Pourquoi ne pas déprécier il?

D'autres questions qui viennent à l'esprit:

  1. N'est-il pas une meilleure façon de faire respecter RequestContext par défaut?
  2. Est-il un moyen pour éviter de passer request comme argument? C'est terriblement redondant. J'ai trouvé un post de blog montrant comment faire render_to_response en un facile à utiliser décorateur. Ne pouvons-nous pas faire quelque chose de similaire avec render?
  3. Est-il pensé à ce problème (si c'est un problème)? Je ne vois rien de cela dans le avenir de la dépréciation de la timeline. Je trouve ça particulièrement déroutant, considérant render est venu avec django 1.3 précisément pour résoudre les problèmes avec render_to_response, et que tout le monde est d'accord vous ne devriez pas utiliser render_to_response

Je sais que cela semble un peu hors-sujet, mais je suis l'espoir d'obtenir des réponses pour expliquer pourquoi render_to_response est de rester autour et\ou des exemples d'utilisation-cas où l'utilisation render_to_response auront la préférence sur render (si il y en a)

InformationsquelleAutor yuvi | 2014-01-27