python - 如何简化此代码并删除 if-else 块?
问题描述
任何人都可以帮助我简化代码,这样我就不必编写 if-else 块并且可以在用户是管理员用户时获取所有私人帖子或返回当前用户的私人帖子?
@main.route('/private')
@login_required
def private():
page = request.args.get('page', 1, type=int)
if current_user.username == "admin":
posts = Post.query\
.filter_by(is_private=True)\
.order_by(Post.date_posted.desc())\
.paginate(per_page=5, page=page)
else:
posts = Post.query\
.filter_by(is_private=True, author=current_user)\
.order_by(Post.date_posted.desc())\
.paginate(per_page=5, page=page)
return render_template('private.html', title="Private", posts=posts)
解决方案
试试这个:
@main.route('/private')
@login_required
def private():
page = request.args.get('page', 1, type=int)
kwargs = {'author' : current_user} \
if current_user.username != "admin" else {}
posts = Post.query\
.filter_by(is_private=True, **kwargs)\
.order_by(Post.date_posted.desc())\
.paginate(per_page=5, page=page)
return render_template('private.html', title="Private", posts=posts)
author=current_user
仅当用户不是管理员时,这才应将 kwarg 添加到您的方法调用中。否则,**kwargs
只会解压缩一个空字典,不会添加任何内容。
推荐阅读
- python - 您如何正确设置嵌入 discord.py 的缩略图?
- plotly - 清理 Sankey 图的建议
- android - 如何获取协程已被销毁/取消的信息?
- html - 如何使用鼠标滚轮使 div 可横向滚动?
- xamarin.android - 为地图实现创建包装类
- ios - 100% 给用户订阅的“小费”是否需要使用 IAP?
- sql - 如何从多个表中填充事实表
- amazon-web-services - Lambda 如何在不使用 AWS Cognito 的情况下授权网站用户?
- java - 在 Visual Studio 代码中导入 java 项目并获取构建路径错误。未绑定的类路径容器:JRE 系统库 jdk-8.0.202.08
- python - 为什么在顶层按住“X”按钮会停止执行 tkinter 中的主窗口?