我使用的是PYTHON FastAPI和JJIA2,所有这些我都是新手.我可以自己设置cookie,或者自己返回html模板,但我不能同时做到这两点.

设置cookie只能像预期的那样工作,但返回模板似乎会覆盖这一点,只返回不带cookie的html.

@app.get("/oauth/auth", response_class=HTMLResponse)
async def login_page(request: Request, response: Response):
    client_Code_Req_Schema = ClientCodeReqSchema(client_id=request.query_params.get("client_id"), redirect_uri=request.query_params.get("redirect_uri"), response_type=request.query_params.get("response_type"))
    if check_client(client_Code_Req_Schema):      
        response.set_cookie(key="redirect_uri", value="test")
        return templates.TemplateResponse("authorise.html", {"request": request})
    else:
        raise HTTPException(status_code=400, detail="Invalid request")

非常感谢您的建议.如果我错过了什么,我很乐意提供更多的信息.

推荐答案

相反,您应该在TemplateResponse上设置cookie-从该端点返回-而不是在端点的参数中定义的Response对象,后者可以在检索简单(JSON)消息时使用,例如return {'msg': 'OK'}.

你可能会发现有帮助的相关答案可以在hereherehere中找到.

示例

@app.get("/oauth/auth", response_class=HTMLResponse)
async def login_page(request: Request):
    if ...     
        response = templates.TemplateResponse("authorise.html", {"request": request})
        response.set_cookie(key="redirect_uri", value="test")
        return response
    else:
        raise HTTPException(status_code=400, detail="Invalid request")

Python相关问答推荐

使用Ubuntu、Python和Weasyprint的Docker文件-venv的问题

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Pandas - groupby字符串字段并按时间范围 Select

将图像拖到另一个图像

如何使用数组的最小条目拆分数组

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如果条件不满足,我如何获得掩码的第一个索引并获得None?

为什么抓取的HTML与浏览器判断的元素不同?

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

如何在图中标记平均点?

从嵌套的yaml创建一个嵌套字符串,后面跟着点

Polars asof在下一个可用日期加入

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

如何在Pyplot表中舍入值

关于两个表达式的区别

Python—为什么我的代码返回一个TypeError

并行编程:同步进程

使用类型提示进行类型转换

在极点中读取、扫描和接收有什么不同?

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';