如何将Django Rest Framework的默认URL更改为自定义

时间:2015-12-11 19:47:14

标签: django django-rest-framework

问题几乎都说明了。

E.g。将默认网址(http://127.0.0.1:8000)更改为自定义(https://api.example.com/v1

我使用HyperlinkedModels,一切似乎都在开发中正常运行。使用自定义网址将应用程序移动到另一台服务器会给我带来麻烦。

如何更改默认网址:

default url 127.0.0.1:8000

对于自定义的,请说:

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

1 个答案:

答案 0 :(得分:12)

您将两个问题混合在一起:

  1. 如何在不同的域上运行django-rest-framework项目
  2. 如何更改API的URL路径
  3. 要回答我要说的第一个问题,"就这样做"。 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
    ]
    

    enter image description here