Во-первых: я не вижу ничего плохого в том, чтобы сделать это в двух запросах, потому что один загружает само приложение, а второй загружает контент. Для меня это разделение имеет смысл и может оказаться полезным в будущем, если вы захотите повторно использовать, скажем, Конечную точку, которая выдает посты (т. Е. Контент).
Отвечая на ваш вопрос: если по какой-либо причине вы абсолютно хотите загрузить все с помощью одного GET, хорошим способом сделать это было бы передать список сообщений в контекст как сериализованный JSON-объект, а затем загрузите их в JS-контекст в Django-шаблоне.
т.е. в view.py:
from json import dumps
def view(request):
context = {
'posts':get_posts(),
}
render_to_response('django_template.html', context,
context_instance=RequestContext(request))
def get_posts():
qs = Posts.objects.all()
return dumps({'posts': qs })
в django_template:
{% block content %}
<div id="root"></div>
{% endblock %}
{% block javascript %}
<script>
var INITIAL_POSTS = {{ posts|safe }};
</script>
<script type="text/javascript"
src="PATH_TO_STATIC_REACT_ASSET.JS"></script>
{% endblock %}
теперь вы должны размещать свои сообщения в JS-контексте и загружать их в свой компонент React. Еще раз: я бы согласился с комментарием Даниэля Роземана