在我的网页上,我正在使用Flask微框架。为了让您更好地理解我的问题,我决定包含我的几个文件。希望我不会劝阻你。
示例请记住,由于我网站的复杂性,此示例不完整。但我希望它会说明这个问题。
运行服务器的script.py
:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
@app.route('/<name>')
def home(name=''):
return render_template('home.html', name=name)
@app.route('/user/')
@app.route('/user/<task>')
def user(task=''):
return render_template('user.html', task=task)
然后我有template.html
:
<!-- some html code -->
<div id="navBar"></div>
<div id="mainContent">
{% block content %}
{% endblock %}
</div>
<!-- some html code -->
和user.html
:
{% extends 'template.html' %}
{% block content %}
{% if task == 'homework' %}
{% include '/tasks/homework.html' %}
{% endif %}
{% endblock %}
最后我的script.js
:
// some jQuery script
$('#button').click(function(){
$('#navTask').empty();
$('#navTask').append('\
<div class="task">\
<a href="/user/homework">Homework</a>\
</div>');
});
// some jQuery script
回到我的问题!基本上它是这样做的。点击#button
后,它会#navTask
(位于页面某处的div
)附加一些div
,其中包含指向/user/homework
的链接。点击Homework
后,Flask会识别更改网址并呈现user.html
,以便网页的某些部分发生变化。我的问题是:点击链接Homework
后,链接Homework
也会消失。我不确定,如何解决它。
我想,通过将div.task
附加到#navBar
,无论网址如何,它都会在整个网页中发生变化。但据我所知,它没有。
我希望这种行为 - 在页面的某个地方有一个div,点击#button
后,内容会发生变化并显示新链接。当您单击链接时,页面上某处的内容会发生变化,但链接会保持原样。链接可能会消失,例如仅当您在home
页面时。
注意我现在很确定,如果我的期望是真的。我可以通过使用jQuery来做到这一点,但因为main.py
要复杂得多,而且我使用从URL获得的数据,我仍然采用这种方式&#34;方式&#34;。
答案 0 :(得分:0)
也许我误解了您,但如果您不想刷新所有网页内容,则需要点击链接时触发AJAX请求。
每当提交的Ajax请求没有提交给服务器时 - 页面将被完全重绘。
在服务器端,您可以检查它是否XMLHTTPRequest以及是否返回JSON数据或其他方便。
也许这个小flask-jquery-example会帮助你。
P.S。您可以通过window.location.pathname
或$(location).attr('href')