【发布时间】:2022-08-08 01:04:26
【问题描述】:
我正在我的博客上建立一个评论系统,我正在渲染现有的 cmets,如下所示:
{% for comment in comments %}
<div id=\"task-comments\" class=\"pt-4\">
<!-- comment-->
<div
class=\"bg-white rounded-lg p-3 flex flex-col justify-center items-center md:items-start shadow-lg mb-4\">
<div class=\"flex flex-row justify-center mr-2\">
<img alt=\"avatar\" width=\"48\" height=\"48\"
class=\"rounded-full w-10 h-10 mr-4 shadow-lg mb-4\"
src=\"https://cdn1.iconfinder.com/data/icons/technology-devices-2/100/Profile-512.png\">
<h3 class=\"text-purple-600 font-semibold text-lg text-center md:text-left \">{{
comment.author[\'name\']|e }}</h3>
</div>
<p style=\"width: 90%\" class=\"text-gray-600 text-lg text-center md:text-left \">{{
comment.content|e }} </p>
</div>
<!-- comment end-->
<!-- comment-->
<!-- comment end-->
</div>
{% endfor %}
这里的问题是,当我发表评论时(使用 FastAPI 路由),我不知道如何获取更新的 cmets 列表!我知道 Jinja 可能不是最好的工具,并且考虑过使用 Alpine JS x-for 循环,但我很想知道 Jinja 是否有办法在本地执行此操作。
谢谢!!
-
实际问题是什么?评论在传递到 url 时不保存,或者 jinja 在页面刷新后不显示它们?
-
Jinja 在页面刷新后显示它们,但我想知道如何通过我的 FastAPI 路由手动触发刷新,或者有一种优雅的方式将发布的评论添加为 dom 中的元素而不刷新
-
这是使用
success回调函数向服务器发出 javascript 和 ajax(或普通 xhr)请求的要点,该回调函数将触发页面刷新或在给定的响应数据上重建 dom -
现在这就是我要返回的 \' return { \"status\" : \"SUCCESS\", \"data\" : req_info } \' 我应该改变它来触发刷新吗?
-
我说的不是后端。您的前端部分(发送给客户端的 Jinja 模板)必须调用 api 端点来创建评论。如果您正在回答数据,那么您可以使用 javascript 更新您的 dom 而无需刷新页面。或者您可以在获得成功代码时触发刷新页面(再次使用 javascript)