首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastAPI中的会话

FastAPI中的会话
EN

Stack Overflow用户
提问于 2021-06-23 20:08:56
回答 1查看 2.5K关注 0票数 5

我想建立一个购物车与FastAPI和金佳作为我的模板

因此,我需要保存会话中每个匿名用户的数据。

Django和flask有一个内置的会话函数,我们可以很容易地完成它。

其中一种解决方案是使用SQLAlchemy会话,但SQLAlchemy会话不支持匿名用户,我们必须为每个会话单独创建令牌。然后,我们应该将每个数据与存储的令牌一起保存。

有没有其他类似于Django和Flask内置函数的方式?

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 17:59:00

首先,我们应该在cart应用程序中创建cart文件,然后使用我们想要的函数构建Cart类。

代码语言:javascript
复制
secret_key='cart'

class Cart(object):

    def __init__(self, request,db):

        self.session = request.session
        cart = self.session.get(secret_key)

        if not cart:
            # save an empty cart in the session
            cart = self.session[secret_key] = {}

        self.cart = cart

    def add(self, product, quantity=1, update_quantity=False):

        product_id = str(product.id)
        if product_id not in self.cart:
            self.cart[product_id] = {'quantity': 0,
                                 'price': str(product.price)
                                 }
        if update_quantity:
            self.cart[product_id]['quantity'] = quantity
        else:
            self.cart[product_id]['quantity'] += quantity

然后我们应该创建cart_add接口:

代码语言:javascript
复制
@app.post("/add")
def cart_add(request: Request,db: Session = Depends(get_db), id: int=Form(...), quantity: int=Form(...),
         update:bool=Form(...)):
    cart=Cart(request,db)
    product=db.query(models.Product).filter(models.Product.id == id).first()
    cart.add(product=product, quantity=quantity, update_quantity=update)
    return RedirectResponse(url="/cart", status_code=status.HTTP_303_SEE_OTHER)

就是这样。我们通过fastapi.Request.session内置函数在会话中保存匿名用户的购物车,它会将我们的数据保存在cookies中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68099561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档