FastAPI中的会话

我想用 FastAPI 和 Jinja 作为我的模板构建一个购物车所以我需要在会话中为每个匿名用户保存数据。Django 和 flask 有一个内置的会话函数,我们可以很容易地做到。

我想用 FastAPI 和 Jinja 作为我的模板构建一个购物车
所以我需要在会话中为每个匿名用户保存数据。
Django 和 flask 有一个内置的会话函数,我们可以很容易地做到。

6

首先,我们应该在购物车应用程序中创建购物车文件,然后使用所需的功能构建购物车类。

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 API:

@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 内置函数在会话中保存了匿名用户的购物车,它将把我们的数据保存在 cookie 中。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(553)
在yum.conf中设置代理
上一篇
薛定谔方程在 Mathematica中的应用
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(7条)