python - 如何按日期对帖子进行排序(FLASK、PYTHON、SQLALCHEMY)
问题描述
我想知道如何按上传的数据对主页上显示的帖子进行排序,我将日期保存到数据库中的每个帖子。目前,它们按字母顺序显示。
这是我想显示图像的页面的路线
回家路线:
@views.route("/")
def home():
title = Post.query.get("title")
date = Post.query.get("date")
images = os.listdir(os.path.join(staticpath, "uploads"))
return render_template('home.html', images=images, user=current_user, title=title, date=date, Post=Post, User=User)
我想按日期显示图像的页面的 HTML
网页:
{% extends "base.html" %}
{% block title %}home{% endblock %}
{% block content %}
<section class="list">
{% for image in images %}
<p> title: {{ Post.query.filter_by(name=image).first().title }}</p>
<p> date: {{ Post.query.filter_by(name=image).first().date}}</p>
<p> OP ID: {{ Post.query.filter_by(name=image).first().user_id}}
<section class="col-md-3 col-sm-6" >
<img src="{{ url_for('static', filename='uploads/' + image) }}"width = 530>
</section>
<a href="{{ url_for('static', filename='uploads/' + image) }}" style="absolute: 600;" download>{{ image }}</a>
<p class="solid" style="border-style: solid;"></p>
{% endfor %}
</section>
{% endblock %}
这是存储帖子的数据库,它包括日期
数据库模型:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
date = db.Column(db.DateTime(timezone=True), default = func.now())
minetype = db.Column(db.Text, nullable=False)
name = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
解决方案
我将按照以下方式更改处理程序和模板,这将允许您实现:
- 所有
Post
s 将在一个查询中加载,并立即排序 - 您不会在模板中进行数据库查询,从而更清晰地分离关注点
def home():
title = Post.query.get("title")
date = Post.query.get("date")
# images below are list of strings
images = os.listdir(os.path.join(staticpath, "uploads"))
# images below is a collection of `Post` instances (and it is sorted)
images = Post.query.filter(Post.name.in_(images)).order_by(Post.date)
return render_template('home.html', images=images, user=current_user, title=title, date=date, Post=Post, User=User)
并且您的模板将更改如下:
{% extends "base.html" %}
{% block title %}home{% endblock %}
{% block content %}
<section class="list">
{% for image in images %}
<p> title: {{ image.title }}</p>
<p> date: {{ image.date }}</p>
<p> OP ID: {{ image.user_id }}</p>
<section class="col-md-3 col-sm-6" >
<img src="{{ url_for('static', filename='uploads/' + image.name) }}" width = 530>
</section>
<a href="{{ url_for('static', filename='uploads/' + image.name) }}" style="absolute: 600;" download>{{ image }}</a>
<p class="solid" style="border-style: solid;"></p>
{% endfor %}
</section>
{% endblock %}
推荐阅读
- freepascal - 尝试使用 checkOptions 处理 --options 仅在 --option=value 时有效,而不是在 --option value 时有效
- scala - 具有冲突成员的特征混合:为什么我的代码可以成功编译?
- javascript - 获取 Discord 服务器中当前用户的角色
- python - 使用 F 值作为 dict 键对 django 进行排序
- c++ - 如何确保 VSCode 禁用 * 、 % 和 / 的间距
- php - 未找到列:1054“字段列表”中的未知列“徽标”
- amazon-web-services - DDBLockClient - 非领导者在第一次失败后不会竞争领导者
- regex - 正则表达式匹配“
%% " - spring-boot - Spring Data JDBC - 可在自定义查询上分页
- object - 是否可以将派生类型传递给fortran中的类子例程