gpt4 book ai didi

python - Google App Engine-Ajax 使用 python 从数据存储区刷新

转载 作者:太空狗 更新时间:2023-10-30 02:14:08 25 4
gpt4 key购买 nike

我有一个应用程序(用 python 开发)需要每 5 秒后从数据存储中刷新 View 。我已经推出了一个 javascript 函数并使用 ajax 处理刷新。

Ajax函数

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>      <script type="text/javascript">             var refreshId = setInterval(function()          {           $('#responsecontainer').fadeOut("slow").load('/refresh').fadeIn("slow");            }, 5000);       </script>

之后,我有一组 div 标签(responsecontainer),其中包含从服务器端返回的参数以供显示。

<div id="responsecontainer">
{% for greeting in greetings %}
{% if greeting.author %}
<b>{{ greeting.author.nickname }}</b> wrote:
<a href="/sign?key={{ greeting.key.id }}&auth={{ greeting.author.nickname }}">Delete</a>
{% else %}
An anonymous person wrote:
{% endif %}
<blockquote>{{ greeting.content|escape }}</blockquote>

{% endfor %}
</div>

<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook" name="submitGuestBk"></div>

</form>

我的服务器端代码是查询数据存储并将结果呈现回模板文件 (index.html)。

class RefreshPage(webapp.RequestHandler):
def get(self):
greetings_query = Greeting.all().order('-date')
greetings = greetings_query.fetch(10)

if users.get_current_user():
url = users.create_logout_url(self.request.uri)
url_linktext = 'Logout'
else:
url = users.create_login_url(self.request.uri)
url_linktext = 'Login'

template_values = {
'greetings': greetings,
'url': url,
'url_linktext': url_linktext,
}

path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, {}))

但是,当我运行该应用程序时,结果会与表单和表格等 html 内容一起刷新。在 index.html 每 5 秒自行刷新后,我看到了 2 个表单。

任何人都可以指导我了解可能的原因和解决方案吗?

最佳答案

调用 load('/refresh') 用加载的 HTML 替换 responsecontainer div 的内容。

因此,您需要 RefreshPage 处理程序来仅返回该 HTML,而不是整个页面。例如,它应该使用一个仅包含以下内容的模板:

{% for greeting in greetings %} 
{% if greeting.author %}
<b>{{ greeting.author.nickname }}</b> wrote:
<a href="/sign?key={{ greeting.key.id }}&auth={{ greeting.author.nickname }}">Delete</a>
{% else %}
An anonymous person wrote:
{% endif %}
<blockquote>{{ greeting.content|escape }}</blockquote>
{% endfor %}

为了避免在两个模板中重复该内容,您可以让您的主模板在 div 中包含此子模板,例如:

<div id="responsecontainer"> 
{% include "sub_template.html" %}
</div>

<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook" name="submitGuestBk"></div>
</form>

关于python - Google App Engine-Ajax 使用 python 从数据存储区刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com