Как обслуживать django и гэтсби на одном хосте? - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь развернуть интерфейс на основе gatsby с сервером django в одном домене. Он будет опираться на Apache и mod_wsgi. В идеальном мире это должно работать следующим образом:

Я вижу две возможности:

  1. Django знает интерфейс , Обслуживайте все через Django, настройте / как STATIC_URL.
  2. Django не знает о внешнем интерфейсе. Подавать /api и /admin через django. / обрабатывается веб-сервером.

Я чувствую себя более комфортно при втором подходе, однако я не знаю, как настроить VirtualHost для такого сценария. Первый подход выглядит как уродливый хак.

Как мне поступить с этим?

1 Ответ

0 голосов
/ 30 января 2020

После компиляции вашего проекта gatsby django должен быть обработан как stati c page.

Первое: dist gatsby должен находиться на вашем пути static_private.

Второе: в вашем django проекте вы определите URL для /, который будет вызывать, скажем, индексное представление.

Наконец: в вашем представлении вы должны отобразить index.html вашего gatsby dist.

urls.py:

from django.contrib import admin
from django.urls import path, re_path, include
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('apis/', include('apps.urls')),
    path('/', views.index),
]

views.py:

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

Обратите внимание, что если вы обрабатываете маршрутизацию в своем интерфейсе, то ваш шаблон URL для индексное представление должно выглядеть следующим образом: re_path('^.*$', views.index)

Если вы размещаете ваше приложение django на heroku, вам понадобится промежуточное программное обеспечение whitenoise и установите его в своем settings.py:

MIDDLEWARE = [
    ...
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

До c доступно здесь: https://devcenter.heroku.com/articles/django-assets#whitenoise

...