Я пытаюсь настроить проект, используя Django для бэкэнда и React для веб-интерфейса.Проект имеет несколько экранов, много информации в БД и изображения, сгенерированные бэкэндом, и будет включать в себя некоторую аутентификацию и пользовательские разрешения для разных экранов.
Согласно тому, что я нашел - лучший способ сделать этоDjango отображает HTML-файл:
def index(request):
return render(request, 'frontend/index.html')
, который ссылается на файл .js:
<script src="{% static "frontend/main.js" %}"></script>
, созданный с помощью Webpack.
Этот main.js извлекаетданные, которые ему нужны из Django с использованием API REST:
fetch("...some Django endpoint..").then(response => ... this.setState(...retrieved data...))
В отличие от простого использования Django для бэкэнда + шаблонов Django для внешнего интерфейса, где бэкэнд может просто отправить контекст непосредственно в шаблон:
def index(request):
context = {'information': .... retrieve info from DB}
return HttpResponse(loader.get_template('bla/index.html').render(context, request))
и шаблон может использовать эту информацию напрямую, без повторной ссылки на бэкэнд:
{% for bla in information %}
Мне интересно, является ли это разумной настройкой?
Кажется чрезмерным иметьИнтерфейс использует REST для извлечения каждой части информации, которая ему нужна, а бэкэнд предоставляет другой REST API для каждой части данных, которую он должен предоставить (вместо простогоиспользование всей информации в едином формате и отправка ее вместе с шаблоном),
Кроме того, требуется минимум 2 RTT для рендеринга полной страницы (что, я думаю, обычно хорошо)