Вы смешиваете два вопроса в одном:
- Как запустить
django-rest-framework
проект по объявлению ifferent домен
- Как изменить URL-путь API
Для ответа на первый я бы сказал, «Просто сделай это». reverse
Django использует домен запроса для создания абсолютного URL-адреса.
ОБНОВЛЕНИЕ: не забудьте передать Host
заголовок от nginx/apache. Ниже приведен пример конфигурации Nginx:
server {
location/{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8000;
}
}
Второй (путь, точка монтирования) устанавливается в urls.py
:
from django.conf.urls import url, include
from django.contrib import admin
from rest_framework import routers
from quickstart import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^v1/', include(router.urls)), # <-------------- HERE
]
Спасибо за регистрацию. Будет ли это работать даже с установкой gunicorn/nginx? Это отчасти так, как у меня, но он все еще показывает «127.0.0.1». https://api.nutrislots.com/api/ – mimoralea
О, я вижу. Скорее всего, вы потеряли параметр 'proxy_set_header Host $ host;' в конфигурации nginx. Я обновил ответ с помощью примера конфигурации nginx. – twil
Это даже не было ... Мне жаль, что я не мог «+1 * 5». Спасибо, сэр. – mimoralea