1. ホーム
  2. python

[解決済み] Django - render(), render_to_response() と direct_to_template() の違いは何ですか?

2022-02-17 23:46:58

質問

Python/jangoの初心者が理解できる言語で)ビューの違いは何ですか? render() , render_to_response()direct_to_template() ?

Nathan Borrorの基本的なアプリの例

def comment_edit(request, object_id, template_name='comments/edit.html'):
    comment = get_object_or_404(Comment, pk=object_id, user=request.user)
    # ...
    return render(request, template_name, {
        'form': form,
        'comment': comment,
    })

しかし、私はまた

    return render_to_response(template_name, my_data_dictionary,
              context_instance=RequestContext(request))

そして

    return direct_to_template(request, template_name, my_data_dictionary)

どのような違いがあるのか、どのような状況で使用するのか?

どのように解決するのですか?

https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render

render(request, template[, dictionary][, context_instance][, content_type][, status][, current_app])

render() の全く新しいショートカットです。 render_to_response 1.3では、自動的に RequestContext 今後、間違いなく使用することになるでしょう。


2020年版EDIT:注意すべきは render_to_response() は Django 3.0 で削除されました。

https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render-to-response

render_to_response(template[, dictionary][, context_instance][, mimetype])¶

render_to_response は、チュートリアルなどで使用されている標準的なレンダー関数です。使用方法としては RequestContext を指定する必要があります。 context_instance=RequestContext(request)


https://docs.djangoproject.com/en/1.8/ref/generic-views/#django-views-generic-simple-direct-to-template

direct_to_template は、私が(URLではなく)ビューで使用している汎用ビューです。 render() 関数を使用すると、自動的に RequestContext とそのすべての context_processor s.

しかし direct_to_template 避けるべき 関数ベースの汎用ビューは非推奨であるため。どちらかというと render または実際のクラスです。 https://docs.djangoproject.com/en/1.3/topics/generic-views-migration/

を打たなくてよかった。 RequestContext 長い間、長い間