我在 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 中)?
我正在尝试在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)