数据库筛选用户,然后去掉一部分(列表求差),再随机返回一个用户。sqlalchemy + python集合(set) + random

sqlalchemy和flask-sqlalchemy之间的东西不是太清晰。

sqlalchemy文档太他妈多了,日。


今天遇到的实例。


用户进行随机匹配,系统随机返回一个一定筛选条件下的用户。为了用户体验,还得去掉已关注的人。


首先获取满足筛选条件的用户列表:

users = User.query.filter_by(school=form.school.data, sex=form.sex.data, status=form.status.data).all()

且要获取已关注用户列表:

followed = g.user.followed.all()  


重点来了,如何用第一个列表减另一个列表?没这种method,用for循环和if判断,时间复杂度应该超级大。

所以,应该先列表转集合然后集合求差集再转列表。

filter_users = list(set(users) - set(followed))    # 列表转集合求差集再转列表

然后我们就要开始随机选一个用户了。找到python random模块的文档,发现choice()不错,在序列中随机选一个。

注意,如果是空序列,会报错。

所以,下面的代码为:

            if filter_users:
                user = random.choice(filter_users)
                flash(u'您匹配到的用户如下:')
                return redirect(url_for('profile', id=user.id))
            else:
                flash(u'啊哦,没有满足此条件的用户')    # 以后用吉祥物来表现,不要用flash
                return render_template('match.html', form=form)



以上。

今天学到的东西不少,什么hash,数据结构,时间复杂度都出来了。

屌。

Flask是一个基于Python的轻量级Web开发框架,可以用来构建各种类型的网站和应用程序。在使用Flask框架开发一个用户只能发表言论、管理员可以删除和修改评论的功能时,可以按照以下步骤进行操作。 首先,需要创建一个数据库模型来存储用户的评论和管理员的权限。可以使用Flask的数据库扩展如SQLAlchemy来实现。创建一个评论模型,其中包含评论的内容、用户的ID、管理员的ID等字段。同时,还需要创建一个管理员模型,用来存储管理员的信息和权限。 接下来,创建用于用户发表评论的页面和路由。用户在页面上输入评论内容,并点击发布按钮进行提交。在后台的路由函数中,将用户的评论保存到数据库中。 然后,创建管理员操作评论的页面和路由。管理员可以在页面上看到所有的评论列表,并对每条评论进行删除或修改的操作。在后台的路由函数中,根据管理员的操作对评论进行删除或修改,然后保存到数据库中。 为了实现用户只能发表言论的功能,可以在用户发表评论的路由函数中,进行用户身份验证。只有通过验证的用户才能够发表评论,否则会提示用户登录或注册。 对于管理员的权限控制,可以在管理员操作评论的路由函数中,进行管理员身份验证。只有通过验证的管理员才能够进行删除和修改评论的操作,否则会提示权限不足。 总结起来,使用Flask框架可以很方便地实现用户只能发表言论、管理员可以删除和修改评论的功能。通过创建数据库模型、编相应的页面和路由,可以实现用户发表评论和管理员操作评论的功能,并进行身份验证和权限控制,保护用户和管理员的权益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值