在不知道django中的ip地址的情况下调用api

时间:2017-09-08 18:20:41

标签: django django-models django-templates django-rest-framework django-modeladmin

我有一个帖子请求

http://localhost:8000/api/orders/shipment

我想要做的是我不想传递域名/ IP地址并访问类似Django管理控制台的api" 172.18.0.1 - [08 / Sep / 2017 14:30:29]& #34; POST / adminorder / order / import / HTTP / 1.1" 200"

我在django文档中搜索了get_absolute_url()方法来定义自定义网址,我在这种情况下没有得到如何使用它。

1 个答案:

答案 0 :(得分:0)

我认为在请求中使用相对网址是不可能的,但是您可以通过创建一个将相关域添加到您的网址的函数来解决这个问题。 (确保导入您的设置文件!)

from django.conf import settings

development_url = "http://localhost:8000/"
production_url = "http://myapisite.com/"

def create_url(relative_url):
    # If you are on your development server. This is assuming your development always has DEBUG = True, and your production is always DEBUG = False
    if settings.DEBUG:
        return development_url + relative_url

    # Production
    return production_url + relative_url

因此print(create_url("api/test/anothertest"))将返回http://localhost:8000/api/test/anothertest

这就是你如何使用它:

url = create_url("api/orders/shipment/")
data = requests.post(url=url, data=content, headers = headers)