问题几乎都说明了。
E.g。将默认网址(http://127.0.0.1:8000)更改为自定义(https://api.example.com/v1)
我使用HyperlinkedModels,一切似乎都在开发中正常运行。使用自定义网址将应用程序移动到另一台服务器会给我带来麻烦。
如何更改默认网址:
对于自定义的,请说:
https://api.example.org/v1/
答案 0 :(得分:12)
您将两个问题混合在一起:
django-rest-framework
项目要回答我要说的第一个问题,"就这样做"。 Django的reverse
使用请求的域来构建绝对URL。
更新:不要忘记从nginx / apache传递Host
标头。下面是一个示例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
]