小编Nat*_*ova的帖子

FastAPI (starlette) 获取客户端真实IP

我在 FastAPI 上有一个 API,当他请求我的页面时,我需要获取客户端的真实 IP 地址。

我很乐意使用starlette Request。但它返回我的服务器 IP,而不是客户端远程 IP。

我的代码:

@app.post('/my-endpoint')
async def my_endpoint(stats: Stats, request: Request):
    ip = request.client.host
    print(ip)
    return {'status': 1, 'message': 'ok'}
Run Code Online (Sandbox Code Playgroud)

我在做什么错?如何获得真实IP(如在Flask request.remote_addr 中)?

python x-forwarded-for starlette fastapi

13
推荐指数
5
解决办法
8570
查看次数

具有许多相同ID的Django ManyToManyField

我正在尝试在Django中制作一个简单的比萨订购应用程序。我有3个模型(浇头,比萨饼,订单)。在订单模型中,ManyToManyField为Pizza。如果“用户”订购每个比萨饼一个(例如,玛格丽塔和意大利辣香肠),则工作正常,但是如果在POST请求中订购2个玛格丽塔,则结果中只有一个玛格丽塔ID。我如何在一个订单中传递正宗披萨?

我的模型如下所示:

class Toppings(models.Model):
    name = models.CharField(blank=False, max_length=100, unique=True)

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name


class Pizza(models.Model):
    name = models.CharField(blank=False, max_length=100, unique=True)
    ingredients = models.ManyToManyField(Toppings, blank=False, null=False)

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name


class PizzaOrder(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    items = models.ManyToManyField(Pizza, blank=False, null=False)
    status = models.CharField(max_length=1, choices=[
        (1, 'placed'),
        (2, 'approved'),
        (3, 'cooked'),
        (4, 'delivered'),
        (5, 'canceled')
    ], default=1)

    class Meta:
        ordering = ['created']

    def __str__(self):
        return self.created
Run Code Online (Sandbox Code Playgroud)

我用以下数据发送POST:

{
    "items": [1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

sql django foreign-keys django-rest-framework

4
推荐指数
1
解决办法
83
查看次数