2015-12-11 6 views
3

Вопрос говорит почти все.Как изменить шаблон Django Rest Framework по умолчанию для пользователя

E.g. изменение кода по умолчанию (http://127.0.0.1:8000) на заказ (https://api.example.com/v1)

Я использую HyperlinkedModels, и все, кажется, работает правильно в разработке. Перемещение приложения на другой сервер с помощью настраиваемого URL-адреса дает мне проблемы.

Как изменить URL по умолчанию:

default url 127.0.0.1:8000

к пользовательскому один, скажем:

https://api.example.org/v1/

ответ

7

Вы смешиваете два вопроса в одном:

  1. Как запустить django-rest-framework проект по объявлению ifferent домен
  2. Как изменить 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 
] 

enter image description here

+0

Спасибо за регистрацию. Будет ли это работать даже с установкой gunicorn/nginx? Это отчасти так, как у меня, но он все еще показывает «127.0.0.1». https://api.nutrislots.com/api/ – mimoralea

+0

О, я вижу. Скорее всего, вы потеряли параметр 'proxy_set_header Host $ host;' в конфигурации nginx. Я обновил ответ с помощью примера конфигурации nginx. – twil

+0

Это даже не было ... Мне жаль, что я не мог «+1 * 5». Спасибо, сэр. – mimoralea

Смежные вопросы