带有Flask和SqlAlchemy的基于Django的基于日期的存档

马尔滕

我正在重新研究python和Web开发。我过去使用Django,但是已经有一段时间了。Flask + SqlAlchemy对我来说都是新手,但是我喜欢它给我的控件。

开始 下面的代码在我的开发服务器上就像一个超级按钮。我仍然觉得它没有它应该的那么小和高效。我想知道是否有人建立了类似的解决方案。现在,我正在尝试找到一种使用单个查询并将关键字参数设置为格式的方法。此外,我认为围绕该函数构建一个类以使其更具可重用性可能对我很有用。

以下是根据日期构造查询的功能:

def live_post_filter(year=None, month=None, day=None):
    """ Query to filter only published Posts exluding drafts 
    Takes additional arguments to filter by year, month and day
    """
    live = Post.query.filter(Post.status == Post.LIVE_STATUS).order_by(Post.pub_date.desc())

    if year and month and day:
        queryset = live.filter(extract('year', Post.pub_date) == year,
                           extract('month', Post.pub_date) == month,
                           extract('day', Post.pub_date) == day).all()
    elif year and month:
        queryset = live.filter(extract('year', Post.pub_date) == year,
                           extract('month', Post.pub_date) == month).all()
    elif year:
        queryset = live.filter(extract('year', Post.pub_date) == year).all()
    else:
        queryset = live.all()

    return queryset

这是我从视图中调用上述函数的方式:

@mod.route('/api/get_posts/', methods = ['GET'])
@mod.route('/api/get_posts/<year>/<month>/<day>/', methods = ['GET'])
@mod.route('/api/get_posts/<year>/<month>/', methods = ['GET'])
@mod.route('/api/get_posts/<year>/', methods = ['GET'])
def get_posts(year=None, month=None, day=None):
    posts = live_post_filter(year=year, month=month, day=day)
    postlist = []
    if request.method == 'GET':
    # do stuff 

如上所述,所有这些都感觉很笨拙,任何建议我都将不胜感激。

米格尔

extract日期组件进行筛选对我来说似乎很奇怪。我反而会创建一个返回范围从您的旅行日期的辅助功能yearmonth以及day参数:

def get_date_range(year=None, month=None, day=None):
    from_date = None
    to_date = None
    if year and month and day:
        from_date = datetime(year, month, day)
        to_date = from_date
    elif year and month:
        from_date = datetime(year, month, 1)
        month += 1
        if month > 12:
            month = 1
            year += 1
        to_date = datetime(year, month, 1)
    elif year:
        from_date = datetime(year, 1, 1)
        to_date = datetime(year + 1, 1, 1)
    return from_date, to_date

然后查询功能变得简单得多:

def live_post_filter(year=None, month=None, day=None):
    """ Query to filter only published Posts exluding drafts 
    Takes additional arguments to filter by year, month and day
    """
    live = Post.query.filter(Post.status == Post.LIVE_STATUS).order_by(Post.pub_date.desc())
    from_date, to_date = get_date_range(year, month, day)
    if from_date and to_date:
        live = live.filter(Post.pub_date >= from_date, Post.pub_date < to_date)
    return live.all()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于日期时间和唯一性的带有CTE的T-SQL投影/预测/计算问题

来自分类Dev

基于日期时间和唯一性的带有CTE的T-SQL投影/预测/计算问题

来自分类Dev

基于db的Flask-SQLAlchemy wtform

来自分类Dev

Django URL基于带有空格的charfield?

来自分类Dev

Django,带有基于模型属性的查询的ModelManager

来自分类Dev

Django URL基于带有空格的charfield?

来自分类Dev

Django:基于带有条件的注释进行注释

来自分类Dev

Django过滤日期时间仅基于日期

来自分类Dev

基于日期和日期的SQL查询

来自分类Dev

基于日期和时间戳的最大日期

来自分类Dev

Django:具有Mixins和Dispatch方法的基于类的视图

来自分类Dev

带有和不带有基于目标的编码的管道

来自分类Dev

基于一天的开始日期和结束日期的Django过滤器

来自分类Dev

基于日期的总价和基于 mysql 中的俱乐部的打印

来自分类Dev

Angular.js中基于OpenID的身份验证(带有Flask后端)

来自分类Dev

如何基于带有日期的另一列创建Pandas列?

来自分类Dev

在基于对象的Reducer上使用带有日期字段的重新选择

来自分类Dev

基于电子的XMLHttpRequest和带有查询字符串的基于浏览器的URL之间的区别?

来自分类Dev

基于年份和季度的日期范围

来自分类Dev

获取基于数据的日期和时间

来自分类Dev

基于动态值的月初和月底日期

来自分类Dev

Excel:基于文本和日期的 SUMIFS 公式

来自分类Dev

带有Swift的基于文档的应用

来自分类Dev

基于带有“ WITH”子句的SELECT的视图

来自分类Dev

带有apache ldap后端身份验证的django,获取登录用户名和ldap组并基于组(mod_ldap)隐藏详细信息

来自分类Dev

在Django中基于类的视图上带有参数的函数修饰器

来自分类Dev

带有多种方法的基于类的视图如何在Django中使用url?

来自分类Dev

pytest:带有夹具的基于参数的类的测试(pytest-django)

来自分类Dev

基于 Django 类的列表视图,带有两个过滤的单独列表

Related 相关文章

  1. 1

    基于日期时间和唯一性的带有CTE的T-SQL投影/预测/计算问题

  2. 2

    基于日期时间和唯一性的带有CTE的T-SQL投影/预测/计算问题

  3. 3

    基于db的Flask-SQLAlchemy wtform

  4. 4

    Django URL基于带有空格的charfield?

  5. 5

    Django,带有基于模型属性的查询的ModelManager

  6. 6

    Django URL基于带有空格的charfield?

  7. 7

    Django:基于带有条件的注释进行注释

  8. 8

    Django过滤日期时间仅基于日期

  9. 9

    基于日期和日期的SQL查询

  10. 10

    基于日期和时间戳的最大日期

  11. 11

    Django:具有Mixins和Dispatch方法的基于类的视图

  12. 12

    带有和不带有基于目标的编码的管道

  13. 13

    基于一天的开始日期和结束日期的Django过滤器

  14. 14

    基于日期的总价和基于 mysql 中的俱乐部的打印

  15. 15

    Angular.js中基于OpenID的身份验证(带有Flask后端)

  16. 16

    如何基于带有日期的另一列创建Pandas列?

  17. 17

    在基于对象的Reducer上使用带有日期字段的重新选择

  18. 18

    基于电子的XMLHttpRequest和带有查询字符串的基于浏览器的URL之间的区别?

  19. 19

    基于年份和季度的日期范围

  20. 20

    获取基于数据的日期和时间

  21. 21

    基于动态值的月初和月底日期

  22. 22

    Excel:基于文本和日期的 SUMIFS 公式

  23. 23

    带有Swift的基于文档的应用

  24. 24

    基于带有“ WITH”子句的SELECT的视图

  25. 25

    带有apache ldap后端身份验证的django,获取登录用户名和ldap组并基于组(mod_ldap)隐藏详细信息

  26. 26

    在Django中基于类的视图上带有参数的函数修饰器

  27. 27

    带有多种方法的基于类的视图如何在Django中使用url?

  28. 28

    pytest:带有夹具的基于参数的类的测试(pytest-django)

  29. 29

    基于 Django 类的列表视图,带有两个过滤的单独列表

热门标签

归档