首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask-marshmallow -如何有条件地生成HATEOAS URLS

flask-marshmallow -如何有条件地生成HATEOAS URLS
EN

Stack Overflow用户
提问于 2015-06-04 05:59:14
回答 1查看 1K关注 0票数 2

我希望根据对象的当前状态有选择地返回一些URL,并且花了很长时间来解决如何在Schema中公开state属性,执行一些逻辑并根据对象状态确定要返回哪些URL:

模型:

代码语言:javascript
复制
class Car(Model):
    model = Column(String)
    year = Column(String)
    running = Column(Boolean)   #'0 = not running', '1 = running'

和模式:

代码语言:javascript
复制
class CarSchema(ma.Schema):
    class Meta:
        fields = ('model', 'year', 'running',  '_links')

    _links = ma.Hyperlinks({
        'self': ma.URLFor('car_detail', id='<id>'),
        'start': ma.URLFor('car_start', id='<id>')
        'stop': ma.URLFor('car_start', id='<id>')
    })

我想要做的是,只有当'running‘属性为0时才返回起始url,当它为1时才返回停止url,但我不清楚如何实现这一点。

棉花糖似乎有一些装饰器,但我如何利用它们的flask-棉花糖?

EN

回答 1

Stack Overflow用户

发布于 2016-12-03 03:11:02

您可以使用post_dump后处理来完成此操作:检查运行状态并删除不适当的字段。这将比有条件地生成它们容易得多。

代码语言:javascript
复制
class CarSchema(ma.Schema):
    class Meta:
        fields = ('model', 'year', 'running', '_links')

    _links = ma.Hyperlinks({
        'self': ma.URLFor('car_detail', id='<id>'),
        'start': ma.URLFor('car_start', id='<id>')
        'stop': ma.URLFor('car_start', id='<id>')
    })

    @ma.post_dump
    def postprocess(self, data):
        if data['running']:
            del data['_links']['start']
        else:
            del data['_links']['stop']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30631542

复制
相关文章

相似问题

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